]> granicus.if.org Git - clang/commitdiff
Fix nullptr crash in -Wthread-safety-beta
authorReid Kleckner <rnk@google.com>
Thu, 5 Nov 2015 00:24:01 +0000 (00:24 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 5 Nov 2015 00:24:01 +0000 (00:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252107 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/Analyses/ThreadSafetyCommon.h
test/SemaCXX/warn-thread-safety-analysis.cpp

index d9efe1980cfe44c24cf7b772146dbd9a5da98c62..e3570130c2c25a15996033ee0830f2610c62a7be 100644 (file)
@@ -287,7 +287,7 @@ public:
   }
 
   const ValueDecl* valueDecl() const {
-    if (Negated)
+    if (Negated || CapExpr == nullptr)
       return nullptr;
     if (auto *P = dyn_cast<til::Project>(CapExpr))
       return P->clangDecl();
index 01e16a488c9b49ae0d68c2774697f15ea79cb305..b5d2f8e1de83403a267281dd19bb3aac3f990640 100644 (file)
@@ -5182,3 +5182,10 @@ void test() {
 
 }  // end namespace LockableUnions
 
+// This used to crash.
+class acquired_before_empty_str {
+  void WaitUntilSpaceAvailable() {
+    lock_.ReaderLock(); // expected-note {{acquired here}}
+  } // expected-warning {{mutex 'lock_' is still held at the end of function}}
+  Mutex lock_ ACQUIRED_BEFORE("");
+};