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.

llvm-svn: 44220
This commit is contained in:
Ted Kremenek 2007-11-18 20:06:01 +00:00
parent 44158478bb
commit 7016e4d509
1 changed files with 4 additions and 3 deletions

View File

@ -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;