]> granicus.if.org Git - clang/commitdiff
Correctly enqueue successors in ExprEngine::processCallExit().
authorTed Kremenek <kremenek@apple.com>
Sat, 7 Jan 2012 00:10:49 +0000 (00:10 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 7 Jan 2012 00:10:49 +0000 (00:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147698 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp

index 8e9cc3c91f31aa4982e4bf2f16bfbcc734790109..8a08c692d3df36b7a7fbf2b300143707b07dbb25 100644 (file)
@@ -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) {