diff --git a/clang/test/Analysis/NewDelete-intersections.mm b/clang/test/Analysis/NewDelete-intersections.mm index ca588f5c05a9..3a87e4f3f111 100644 --- a/clang/test/Analysis/NewDelete-intersections.mm +++ b/clang/test/Analysis/NewDelete-intersections.mm @@ -11,7 +11,7 @@ extern "C" void free(void *); // checkers bounded with cplusplus.NewDelete. //---------------------------------------------------------------------------- -// malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations +//----- malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations void testMallocFreeNoWarn() { int i; free(&i); // no warn @@ -24,6 +24,10 @@ void testMallocFreeNoWarn() { free(p2); // no warn int *p3 = (int *)malloc(sizeof(int)); // no warn + + int *p4 = (int *)malloc(sizeof(int)); + free(p4); + int j = *p4; // no warn } void testDeleteMalloced() { @@ -36,19 +40,16 @@ void testFreeOpNew() { void *p = operator new(0); free(p); } // expected-warning{{Memory is never released; potential leak}} -// FIXME: Pointer should escape void testFreeNewExpr() { int *p = new int; free(p); } // expected-warning{{Memory is never released; potential leak}} -// FIXME: Pointer should escape void testObjcFreeNewed() { int *p = new int; NSData *nsdata = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1]; // expected-warning{{Memory is never released; potential leak}} } -// FIXME: Pointer should escape void testFreeAfterDelete() { int *p = new int;