aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Analysis/CGColorSpace.c
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-10-22 20:54:52 +0000
committerTed Kremenek <kremenek@apple.com>2008-10-22 20:54:52 +0000
commit9a96bf22ecfd3e6842ac6992a45dc08bad608888 (patch)
treeef639dfe39f7e9c57597ac3085e0247e8c71d69a /clang/test/Analysis/CGColorSpace.c
parent1df62692f2e1ad182ad615cd65ccc24d24784788 (diff)
downloadllvm-9a96bf22ecfd3e6842ac6992a45dc08bad608888.zip
llvm-9a96bf22ecfd3e6842ac6992a45dc08bad608888.tar.gz
llvm-9a96bf22ecfd3e6842ac6992a45dc08bad608888.tar.bz2
Enhance reference-count checker to correctly identify CG "release" functions. This fixes <rdar://problem/6303488>.
llvm-svn: 57997
Diffstat (limited to 'clang/test/Analysis/CGColorSpace.c')
-rw-r--r--clang/test/Analysis/CGColorSpace.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/Analysis/CGColorSpace.c b/clang/test/Analysis/CGColorSpace.c
new file mode 100644
index 0000000..793f75fa
--- /dev/null
+++ b/clang/test/Analysis/CGColorSpace.c
@@ -0,0 +1,18 @@
+// clang -checker-cfref -verify %s
+
+typedef struct CGColorSpace *CGColorSpaceRef;
+extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
+extern CGColorSpaceRef CGColorSpaceRetain(CGColorSpaceRef space);
+extern void CGColorSpaceRelease(CGColorSpaceRef space);
+
+void f() {
+ CGColorSpaceRef X = CGColorSpaceCreateDeviceRGB();
+ CGColorSpaceRetain(X); // expected-warning{{leak}}
+}
+
+void fb() {
+ CGColorSpaceRef X = CGColorSpaceCreateDeviceRGB();
+ CGColorSpaceRetain(X);
+ CGColorSpaceRelease(X);
+ CGColorSpaceRelease(X); // no-warning
+}