diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-10-25 20:20:56 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-10-25 20:20:56 +0000 |
commit | 0d4f7671882a4e902f12504b46eb486dfbf58515 (patch) | |
tree | 7a8ba0df181a4995460f67e717a5a26560fed14f | |
parent | e8a2d4c32cb2a7840bd91c9cf9b7838ee3f47dc3 (diff) |
Add check for UnknownVals for mutexes in ObjCAtSyncChecker. Fixes crash reported in PR 8458.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117300 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Checker/ObjCAtSyncChecker.cpp | 3 | ||||
-rw-r--r-- | test/Analysis/misc-ps.m | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/Checker/ObjCAtSyncChecker.cpp b/lib/Checker/ObjCAtSyncChecker.cpp index 41580955a9..f9a3686c01 100644 --- a/lib/Checker/ObjCAtSyncChecker.cpp +++ b/lib/Checker/ObjCAtSyncChecker.cpp @@ -57,6 +57,9 @@ void ObjCAtSyncChecker::PreVisitObjCAtSynchronizedStmt(CheckerContext &C, return; } + if (V.isUnknown()) + return; + // Check for null mutexes. const GRState *notNullState, *nullState; llvm::tie(notNullState, nullState) = state->Assume(cast<DefinedSVal>(V)); diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m index 2409be351c..52dd7e1def 100644 --- a/test/Analysis/misc-ps.m +++ b/test/Analysis/misc-ps.m @@ -1149,3 +1149,13 @@ void pr8149(void) { for (; ({ do { } while (0); 0; });) { } } +// PR 8458 - Make sure @synchronized doesn't crash with properties. +@interface PR8458 {} +@property(readonly) id lock; +@end + +static +void __PR8458(PR8458 *x) { + @synchronized(x.lock) {} // no-warning +} + |