aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2012-01-07 00:10:49 +0000
committerTed Kremenek <kremenek@apple.com>2012-01-07 00:10:49 +0000
commit242384ddb0e0b65dd7e9e0ac0cf3c31cf98b06a6 (patch)
tree6a92a4500296860bcfdc0e51fa1d68ee9d713c67 /lib/StaticAnalyzer
parent894212e9510299abb203801e014fec76b7926a05 (diff)
Correctly enqueue successors in ExprEngine::processCallExit().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147698 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer')
-rw-r--r--lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
index 8e9cc3c91f..8a08c692d3 100644
--- a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
+++ b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
@@ -72,8 +72,12 @@ void ExprEngine::processCallExit(ExplodedNode *Pred) {
ExplodedNodeSet Dst;
getCheckerManager().runCheckersForPostStmt(Dst, N, CE, *this);
- // Enqueue nodes in Dst on the worklist.
- Engine.enqueue(Dst);
+ // Enqueue the next element in the block.
+ for (ExplodedNodeSet::iterator I = Dst.begin(), E = Dst.end(); I != E; ++I) {
+ Engine.getWorkList()->enqueue(*I,
+ calleeCtx->getCallSiteBlock(),
+ calleeCtx->getIndex()+1);
+ }
}
static bool isPointerToConst(const ParmVarDecl *ParamDecl) {