]> granicus.if.org Git - clang/commitdiff
Fixed bug in WalkaST_VisitDeclSubExprs where we failed to properly check if
authorTed Kremenek <kremenek@apple.com>
Sun, 18 Nov 2007 20:06:01 +0000 (20:06 +0000)
committerTed Kremenek <kremenek@apple.com>
Sun, 18 Nov 2007 20:06:01 +0000 (20:06 +0000)
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

AST/CFG.cpp

index 4a54b469cc76f1a1cc471c92718ce1718986aa3f..f99de1cc79d8d4c4301c45c5adc4d86ef4a734bb 100644 (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;