diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-18 20:06:01 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-18 20:06:01 +0000 |
commit | d660322ccf21fc9a319a62ad42907c631504d4cd (patch) | |
tree | d6a3f299ddfe4875220805c096e8a323afd63520 | |
parent | 9219928c7a036b65d7801a02c4de3a8283ed3124 (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.cpp | 7 |
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; |