[cfe-commits] r69703 - /cfe/trunk/test/Analysis/NSString.m

Ted Kremenek kremenek at apple.com
Tue Apr 21 13:01:03 PDT 2009


Author: kremenek
Date: Tue Apr 21 15:01:03 2009
New Revision: 69703

URL: http://llvm.org/viewvc/llvm-project?rev=69703&view=rev
Log:
Added over-release test case.

Modified:
    cfe/trunk/test/Analysis/NSString.m

Modified: cfe/trunk/test/Analysis/NSString.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSString.m?rev=69703&r1=69702&r2=69703&view=diff

==============================================================================
--- cfe/trunk/test/Analysis/NSString.m (original)
+++ cfe/trunk/test/Analysis/NSString.m Tue Apr 21 15:01:03 2009
@@ -19,6 +19,7 @@
 typedef const struct __CFAllocator * CFAllocatorRef;
 extern const CFAllocatorRef kCFAllocatorDefault;
 extern CFTypeRef CFRetain(CFTypeRef cf);
+void CFRelease(CFTypeRef cf);
 typedef const struct __CFDictionary * CFDictionaryRef;
 const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
 extern CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
@@ -156,13 +157,19 @@
 }
 
 // Test case for passing a tracked object by-reference to a function we
-// don't undersand.
+// don't understand.
 void unknown_function_f12(NSString** s);
 void f12() {
   NSString *string = [[NSString alloc] init];
   unknown_function_f12(&string); // no-warning
 }
 
+// Test double release of CFString (PR 4014).
+void f13(void) {
+  CFStringRef ref = CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100);
+  CFRelease(ref);
+  CFRelease(ref); // expected-warning{{Reference-counted object is used after it is released}}
+}
 
 @interface C1 : NSObject {}
 - (NSString*) getShared;





More information about the cfe-commits mailing list