summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-12-03 06:53:12 +0000
committerTed Kremenek <kremenek@apple.com>2010-12-03 06:53:12 +0000
commitf9f944166a7d6373b938ec476148a86b5ea710ae (patch)
treed35c7ec55784aa874b5e456af8405109be9310df
parent48b430d78939af2033fcdeb505f398a008fac89e (diff)
downloadbcm5719-llvm-f9f944166a7d6373b938ec476148a86b5ea710ae.tar.gz
bcm5719-llvm-f9f944166a7d6373b938ec476148a86b5ea710ae.zip
Add test case for r120795.
llvm-svn: 120796
-rw-r--r--clang/test/Analysis/retain-release.m24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/Analysis/retain-release.m b/clang/test/Analysis/retain-release.m
index c9760de2bb2..edaedcb4f50 100644
--- a/clang/test/Analysis/retain-release.m
+++ b/clang/test/Analysis/retain-release.m
@@ -1386,3 +1386,27 @@ void r8272168() {
}
@end
+// <rdar://problem/8724287> - This test case previously crashed because
+// of a bug in BugReporter.
+extern const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
+typedef struct __CFError * CFErrorRef;
+extern const CFStringRef kCFErrorUnderlyingErrorKey;
+extern CFDictionaryRef CFErrorCopyUserInfo(CFErrorRef err);
+
+static void rdar_8724287(CFErrorRef error)
+{
+ CFErrorRef error_to_dump;
+
+ error_to_dump = error;
+ while (error_to_dump != ((void*)0)) {
+ CFDictionaryRef info;
+
+ info = CFErrorCopyUserInfo(error_to_dump); // expected-warning{{Potential leak of an object allocated on line 1404 and stored into 'info'}}
+
+ if (info != ((void*)0)) {
+ }
+
+ error_to_dump = (CFErrorRef) CFDictionaryGetValue(info, kCFErrorUnderlyingErrorKey);
+ }
+}
+
OpenPOWER on IntegriCloud