BlockInCriticalSectionChecker - silence static analyzer dyn_cast null dereference...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 13 Oct 2019 11:30:06 +0000 (11:30 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 13 Oct 2019 11:30:06 +0000 (11:30 +0000)
The static analyzer is warning about a potential null dereference, but we should be able to use cast<> directly and if not assert will fire for us.

llvm-svn: 374717

clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp

index e5b8a6b..0eb3c3d 100644 (file)
@@ -126,7 +126,7 @@ bool BlockInCriticalSectionChecker::isLockFunction(const CallEvent &Call) const
 
 bool BlockInCriticalSectionChecker::isUnlockFunction(const CallEvent &Call) const {
   if (const auto *Dtor = dyn_cast<CXXDestructorCall>(&Call)) {
-    const auto *DRecordDecl = dyn_cast<CXXRecordDecl>(Dtor->getDecl()->getParent());
+    const auto *DRecordDecl = cast<CXXRecordDecl>(Dtor->getDecl()->getParent());
     auto IdentifierInfo = DRecordDecl->getIdentifier();
     if (IdentifierInfo == IILockGuard || IdentifierInfo == IIUniqueLock)
       return true;