1*3d4bba30STeresa Johnson // RUN: %clangxx_memprof -O0 %s -o %t 2*3d4bba30STeresa Johnson // Default is true (free on realloc to 0 size) 3*3d4bba30STeresa Johnson // RUN: %run %t 2>&1 | FileCheck %s 4*3d4bba30STeresa Johnson // RUN: %env_memprof_opts=allocator_frees_and_returns_null_on_realloc_zero=true %run %t 2>&1 | FileCheck %s 5*3d4bba30STeresa Johnson // RUN: %env_memprof_opts=allocator_frees_and_returns_null_on_realloc_zero=false %run %t 2>&1 | FileCheck %s --check-prefix=NO-FREE 6*3d4bba30STeresa Johnson 7*3d4bba30STeresa Johnson #include <stdio.h> 8*3d4bba30STeresa Johnson #include <stdlib.h> 9*3d4bba30STeresa Johnson main()10*3d4bba30STeresa Johnsonint main() { 11*3d4bba30STeresa Johnson void *p = malloc(42); 12*3d4bba30STeresa Johnson p = realloc(p, 0); 13*3d4bba30STeresa Johnson if (p) { 14*3d4bba30STeresa Johnson // NO-FREE: Allocated something on realloc(p, 0) 15*3d4bba30STeresa Johnson fprintf(stderr, "Allocated something on realloc(p, 0)\n"); 16*3d4bba30STeresa Johnson } else { 17*3d4bba30STeresa Johnson // CHECK: realloc(p, 0) returned nullptr 18*3d4bba30STeresa Johnson fprintf(stderr, "realloc(p, 0) returned nullptr\n"); 19*3d4bba30STeresa Johnson } 20*3d4bba30STeresa Johnson free(p); 21*3d4bba30STeresa Johnson } 22