| // RUN: %clangxx_memprof -O0 %s -o %t | |
| // Default is true (free on realloc to 0 size) | |
| // RUN: %run %t 2>&1 | FileCheck %s | |
| // RUN: %env_memprof_opts=allocator_frees_and_returns_null_on_realloc_zero=true %run %t 2>&1 | FileCheck %s | |
| // RUN: %env_memprof_opts=allocator_frees_and_returns_null_on_realloc_zero=false %run %t 2>&1 | FileCheck %s --check-prefix=NO-FREE | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| int main() { | |
| void *p = malloc(42); | |
| p = realloc(p, 0); | |
| if (p) { | |
| // NO-FREE: Allocated something on realloc(p, 0) | |
| fprintf(stderr, "Allocated something on realloc(p, 0)\n"); | |
| } else { | |
| // CHECK: realloc(p, 0) returned nullptr | |
| fprintf(stderr, "realloc(p, 0) returned nullptr\n"); | |
| } | |
| free(p); | |
| } |