diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-12-03 06:53:12 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-12-03 06:53:12 +0000 |
commit | f9f944166a7d6373b938ec476148a86b5ea710ae (patch) | |
tree | d35c7ec55784aa874b5e456af8405109be9310df | |
parent | 48b430d78939af2033fcdeb505f398a008fac89e (diff) | |
download | bcm5719-llvm-f9f944166a7d6373b938ec476148a86b5ea710ae.tar.gz bcm5719-llvm-f9f944166a7d6373b938ec476148a86b5ea710ae.zip |
Add test case for r120795.
llvm-svn: 120796
-rw-r--r-- | clang/test/Analysis/retain-release.m | 24 |
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); + } +} + |