summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-04-18 16:30:14 +0000
committerTed Kremenek <kremenek@apple.com>2008-04-18 16:30:14 +0000
commitd004c418b69ce11473bf5cc74db46e16272ee63d (patch)
treebc18f585262579a458128f641f43c90620346cf3
parentb06817e914e2fad55fb19abfecc1fae83e0da62b (diff)
downloadbcm5719-llvm-d004c418b69ce11473bf5cc74db46e16272ee63d.tar.gz
bcm5719-llvm-d004c418b69ce11473bf5cc74db46e16272ee63d.zip
Fixed bug in GREndPathNodeBuilder: only return a node if it wasn't in the node cache.
llvm-svn: 49907
-rw-r--r--clang/lib/Analysis/CFRefCount.cpp4
-rw-r--r--clang/lib/Analysis/GRCoreEngine.cpp3
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Analysis/CFRefCount.cpp b/clang/lib/Analysis/CFRefCount.cpp
index 1c2f20aa3bd..1618f04359d 100644
--- a/clang/lib/Analysis/CFRefCount.cpp
+++ b/clang/lib/Analysis/CFRefCount.cpp
@@ -1065,6 +1065,10 @@ void CFRefCount::EvalEndPath(GRExprEngine& Eng,
}
ExplodedNode<ValueState>* N = Builder.MakeNode(St);
+
+ if (!N)
+ return;
+
std::vector<SymbolID>*& LeaksAtNode = Leaks[N];
assert (!LeaksAtNode);
LeaksAtNode = new std::vector<SymbolID>();
diff --git a/clang/lib/Analysis/GRCoreEngine.cpp b/clang/lib/Analysis/GRCoreEngine.cpp
index ffb2fd2feba..7ad7f73abf7 100644
--- a/clang/lib/Analysis/GRCoreEngine.cpp
+++ b/clang/lib/Analysis/GRCoreEngine.cpp
@@ -456,7 +456,8 @@ ExplodedNodeImpl* GREndPathNodeBuilderImpl::generateNodeImpl(void* State) {
if (IsNew) {
Node->markAsSink();
Eng.G->addEndOfPath(Node);
+ return Node;
}
- return Node;
+ return NULL;
}
OpenPOWER on IntegriCloud