[cfe-commits] r141683 - /cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp
Anna Zaks
ganna at apple.com
Tue Oct 11 10:30:00 PDT 2011
Author: zaks
Date: Tue Oct 11 12:29:59 2011
New Revision: 141683
URL: http://llvm.org/viewvc/llvm-project?rev=141683&view=rev
Log:
[analyzer] CheckerContext updates checkDst in it's destructor, so make sure the object is destructed before checkDst is used.
Modified:
cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp
Modified: cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp?rev=141683&r1=141682&r2=141683&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp Tue Oct 11 12:29:59 2011
@@ -445,9 +445,13 @@
ProgramPoint::Kind K = ProgramPoint::PostStmtKind;
const ProgramPoint &L = ProgramPoint::getProgramPoint(CE, K,
Pred->getLocationContext(), EI->Checker);
-
- CheckerContext C(checkDst, Eng.getBuilder(), Eng, Pred, L, 0);
- bool evaluated = (*EI)(CE, C);
+ bool evaluated = false;
+ { // CheckerContext generates transitions(populates checkDest) on
+ // destruction, so introduce the scope to make sure it gets properly
+ // populated.
+ CheckerContext C(checkDst, Eng.getBuilder(), Eng, Pred, L, 0);
+ evaluated = (*EI)(CE, C);
+ }
assert(!(evaluated && anyEvaluated)
&& "There are more than one checkers evaluating the call");
if (evaluated) {
More information about the cfe-commits
mailing list