diff options
author | Anna Zaks <ganna@apple.com> | 2011-11-01 22:41:14 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2011-11-01 22:41:14 +0000 |
commit | 2d950b15b2b2b650b102ecf0c6b50b45e0cb6a8a (patch) | |
tree | b99ba8d21f530241e973d709daafb967682a9290 /lib/StaticAnalyzer/Core/CoreEngine.cpp | |
parent | 6889679d72859960e0fc8d1080487f63c4df1e0a (diff) |
[analyzer] Fix PR11282 - an assert in markAsSink
This is another fallout from the refactoring. We were
calling MarkAsSink on a cached out node.
(Fixes radar://10376675)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143516 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/CoreEngine.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/CoreEngine.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/StaticAnalyzer/Core/CoreEngine.cpp b/lib/StaticAnalyzer/Core/CoreEngine.cpp index db007feafb..0003e6cd3f 100644 --- a/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -546,14 +546,17 @@ ExplodedNode* NodeBuilder::generateNodeImpl(const ProgramPoint &Loc, ExplodedNode *N = C.Eng.G->getNode(Loc, State, &IsNew); N->addPredecessor(FromN, *C.Eng.G); Frontier.erase(FromN); + assert(IsNew || N->isSink() == MarkAsSink); + + if (!IsNew) + return 0; if (MarkAsSink) N->markAsSink(); - - if (IsNew && !MarkAsSink) + else Frontier.Add(N); - return (IsNew ? N : 0); + return N; } StmtNodeBuilder::~StmtNodeBuilder() { |