void af2c() { int *p = my_malloc(12); free(p); my_hold(p); // expected-warning{{Try to free a memory block that has been released}} }
// This case is (possibly) ok, be conservative int * af5() { int *p = my_malloc(12); my_hold(p); return p; // no-warning }
// This case inflicts a possible double-free. void af3() { int *p = my_malloc(12); my_hold(p); free(p); // expected-warning{{Attempt to free non-owned memory}} }
// This case would inflict a double-free elsewhere. // However, this case is considered an analyzer bug since it causes false-positives. void af3() { int *p = my_malloc(12); my_hold(p); free(p); // no-warning }
void af2c() { int *p = my_malloc(12); free(p); my_hold(p); // expected-warning{{Attempt to free released memory}} }