From: Ted Kremenek Date: Wed, 16 Jan 2008 22:13:19 +0000 (+0000) Subject: Fixed iterator bug in ExplodedNodeImpl::NodeGroup::end(); we would improperly X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=160760e6326cf525bc48adf7fa1d414a049ba1f0;p=clang Fixed iterator bug in ExplodedNodeImpl::NodeGroup::end(); we would improperly handle the case where the number of nodes was 0. Fixed bug in GREngineImpl where we did not proceed to the next statement when processing a PostStmt location. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46093 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Analysis/ExplodedGraph.cpp b/Analysis/ExplodedGraph.cpp index 35e9d9de9a..1cfb02c787 100644 --- a/Analysis/ExplodedGraph.cpp +++ b/Analysis/ExplodedGraph.cpp @@ -60,7 +60,7 @@ ExplodedNodeImpl** ExplodedNodeImpl::NodeGroup::begin() const { ExplodedNodeImpl** ExplodedNodeImpl::NodeGroup::end() const { if (getKind() == Size1) - return ((ExplodedNodeImpl**) &P)+1; + return (ExplodedNodeImpl**) (P ? &P+1 : &P); else return const_cast(&*(getVector(getPtr()).rbegin())+1); } diff --git a/Analysis/GREngine.cpp b/Analysis/GREngine.cpp index 42951fc24f..f0c59cf93a 100644 --- a/Analysis/GREngine.cpp +++ b/Analysis/GREngine.cpp @@ -167,7 +167,7 @@ void GREngineImpl::HandlePostStmt(const PostStmt& L, CFGBlock* B, HandleBlockExit(B, Pred); else { GRNodeBuilderImpl Builder(B, StmtIdx, Pred, this); - ProcessStmt(L.getStmt(), Builder); + ProcessStmt((*B)[StmtIdx], Builder); } }