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 | 83300e884d0cfb78a2e8f889b65a77e6781456fe (patch) | |
tree | 264b2b1fd0aa342004b47828c166e087e1c9d8dd | |
parent | 40406fe63df2b932d6e9fd021f77f097f9d33afb (diff) |
Add test case for r120795.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120796 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/Analysis/retain-release.m | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m index c9760de2bb..edaedcb4f5 100644 --- a/test/Analysis/retain-release.m +++ b/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); + } +} + |