aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-18 20:06:01 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-18 20:06:01 +0000
commitd660322ccf21fc9a319a62ad42907c631504d4cd (patch)
treed6a3f299ddfe4875220805c096e8a323afd63520
parent9219928c7a036b65d7801a02c4de3a8283ed3124 (diff)
Fixed bug in WalkaST_VisitDeclSubExprs where we failed to properly check if
the StmtIterator referring to the initializers of a chain of Decls was equal to the "end" iterator. The particular bug manifested when an iterator was created on a chain of decls with no initializers. Thanks to Nuno Lopes for reporting this bug and providing a patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44220 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--AST/CFG.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/AST/CFG.cpp b/AST/CFG.cpp
index 4a54b469cc..f99de1cc79 100644
--- a/AST/CFG.cpp
+++ b/AST/CFG.cpp
@@ -332,11 +332,12 @@ CFGBlock* CFGBuilder::WalkAST(Stmt* S, bool AlwaysAddStmt = false) {
/// we must linearize declarations to handle arbitrary control-flow induced by
/// those expressions.
CFGBlock* CFGBuilder::WalkAST_VisitDeclSubExprs(StmtIterator& I) {
+ if (I == StmtIterator())
+ return Block;
+
Stmt* S = *I;
++I;
-
- if (I != StmtIterator())
- WalkAST_VisitDeclSubExprs(I);
+ WalkAST_VisitDeclSubExprs(I);
Block = addStmt(S);
return Block;