1 // RUN: %clang_cl_asan %s -o %t.exe 2 // RUN: %run %t.exe 2>&1 | FileCheck %s 3 // RUN: %clang_cl %s -o %t.exe 4 // RUN: %run %t.exe 2>&1 | FileCheck %s 5 6 #include <cassert> 7 #include <stdio.h> 8 #include <windows.h> 9 10 int main() { 11 void *p = calloc(1, 100); 12 assert(p); 13 void *np = _recalloc(p, 2, 100); 14 assert(np); 15 for (int i = 0; i < 2 * 100; i++) { 16 assert(((BYTE *)np)[i] == 0); 17 } 18 void *nnp = _recalloc(np, 1, 100); 19 assert(nnp); 20 for (int i = 0; i < 100; i++) { 21 assert(((BYTE *)nnp)[i] == 0); 22 ((BYTE *)nnp)[i] = 0x0d; 23 } 24 void *nnnp = _recalloc(nnp, 2, 100); 25 assert(nnnp); 26 for (int i = 0; i < 100; i++) { 27 assert(((BYTE *)nnnp)[i] == 0x0d); 28 } 29 for (int i = 100; i < 200; i++) { 30 assert(((BYTE *)nnnp)[i] == 0); 31 } 32 fprintf(stderr, "passed\n"); 33 return 0; 34 } 35 36 // CHECK-NOT: Assertion 37 // CHECK: passed