[cfe-commits] r52346 - in /cfe/trunk/test: Analysis-Apple/CFString.c Analysis/CFString.c

Ted Kremenek kremenek at apple.com
Mon Jun 16 12:35:31 PDT 2008


Author: kremenek
Date: Mon Jun 16 14:35:31 2008
New Revision: 52346

URL: http://llvm.org/viewvc/llvm-project?rev=52346&view=rev
Log:
Move Analysis-Apple/CFString.c to Analysis (the test case now works on all platforms).

Added:
    cfe/trunk/test/Analysis/CFString.c
Removed:
    cfe/trunk/test/Analysis-Apple/CFString.c

Removed: cfe/trunk/test/Analysis-Apple/CFString.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis-Apple/CFString.c?rev=52345&view=auto

==============================================================================
--- cfe/trunk/test/Analysis-Apple/CFString.c (original)
+++ cfe/trunk/test/Analysis-Apple/CFString.c (removed)
@@ -1,30 +0,0 @@
-// RUN: clang -checker-cfref -verify %s
-
-#include <CoreFoundation/CFString.h>
-#include <CoreFoundation/CFArray.h>
-
-void f1() {
-  
-  // Create the array.
-  CFMutableArrayRef A = CFArrayCreateMutable(NULL, 10, &kCFTypeArrayCallBacks);
-
-  // Create a string.
-  CFStringRef s1 = CFStringCreateWithCString(NULL, "hello world",
-                                             kCFStringEncodingUTF8);
-
-  // Add the string to the array.
-  CFArrayAppendValue(A, s1);
-  
-  // Decrement the reference count.
-  CFRelease(s1); // no-warning
-  
-  // Get the string.  We don't own it.
-  s1 = (CFStringRef) CFArrayGetValueAtIndex(A, 0);
-  
-  // Release the array.
-  CFRelease(A); // no-warning
-  
-  // Release the string.  This is a bug.
-  CFRelease(s1); // expected-warning{{Incorrect decrement of the reference count}}
-}
-

Added: cfe/trunk/test/Analysis/CFString.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/CFString.c?rev=52346&view=auto

==============================================================================
--- cfe/trunk/test/Analysis/CFString.c (added)
+++ cfe/trunk/test/Analysis/CFString.c Mon Jun 16 14:35:31 2008
@@ -0,0 +1,49 @@
+// RUN: clang -checker-cfref -verify %s
+
+//===----------------------------------------------------------------------===//
+// The following code is reduced using delta-debugging from
+// CoreFoundation.h (Mac OS X).
+//
+// It includes the basic definitions for the test cases below.
+// Not directly including CoreFoundation.h directly makes this test case 
+// both svelt and portable to non-Mac platforms.
+//===----------------------------------------------------------------------===//
+
+typedef signed long CFIndex;
+typedef const struct __CFString * CFStringRef;
+typedef struct {} CFArrayCallBacks;
+extern const CFArrayCallBacks kCFTypeArrayCallBacks;
+typedef const struct __CFArray * CFArrayRef;
+typedef struct __CFArray * CFMutableArrayRef;
+extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
+enum { kCFStringEncodingMacRoman = 0,     kCFStringEncodingWindowsLatin1 = 0x0500,     kCFStringEncodingISOLatin1 = 0x0201,     kCFStringEncodingNextStepLatin = 0x0B01,     kCFStringEncodingASCII = 0x0600,     kCFStringEncodingUnicode = 0x0100,     kCFStringEncodingUTF8 = 0x08000100,     kCFStringEncodingNonLossyASCII = 0x0BFF      ,     kCFStringEncodingUTF16 = 0x0100,     kCFStringEncodingUTF16BE = 0x10000100,     kCFStringEncodingUTF16LE = 0x14000100,      kCFStringEncodingUTF32 = 0x0c000100,     kCFStringEncodingUTF32BE = 0x18000100,     kCFStringEncodingUTF32LE = 0x1c000100  };
+
+//===----------------------------------------------------------------------===//
+// Test cases.
+//===----------------------------------------------------------------------===//
+
+void f1() {
+  
+  // Create the array.
+  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+
+  // Create a string.
+  CFStringRef s1 = CFStringCreateWithCString(0, "hello world",
+                                             kCFStringEncodingUTF8);
+
+  // Add the string to the array.
+  CFArrayAppendValue(A, s1);
+  
+  // Decrement the reference count.
+  CFRelease(s1); // no-warning
+  
+  // Get the string.  We don't own it.
+  s1 = (CFStringRef) CFArrayGetValueAtIndex(A, 0);
+  
+  // Release the array.
+  CFRelease(A); // no-warning
+  
+  // Release the string.  This is a bug.
+  CFRelease(s1); // expected-warning{{Incorrect decrement of the reference count}}
+}
+





More information about the cfe-commits mailing list