Example #1
0
void af2c() {
  int *p = my_malloc(12);
  free(p);
  my_hold(p); // expected-warning{{Try to free a memory block that has been released}}
}
Example #2
0
// 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}}
}
Example #4
0
// 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}}
}