diff options
-rw-r--r-- | AST/StmtIterator.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/AST/StmtIterator.cpp b/AST/StmtIterator.cpp index 9db5f6134f..89d17bd340 100644 --- a/AST/StmtIterator.cpp +++ b/AST/StmtIterator.cpp @@ -31,6 +31,7 @@ static inline VariableArrayType* FindVA(Type* t) { void StmtIteratorBase::NextVA() { assert (getVAPtr()); + assert (decl); VariableArrayType* p = getVAPtr(); p = FindVA(p->getElementType().getTypePtr()); @@ -59,11 +60,6 @@ void StmtIteratorBase::NextDecl(bool ImmediateAdvance) { } for ( ; decl ; decl = decl->getNextDeclarator()) { - if (!decl) { - RawVAPtr = 0; - return; - } - if (VarDecl* VD = dyn_cast<VarDecl>(decl)) { if (VariableArrayType* VAPtr = FindVA(VD->getType().getTypePtr())) { setVAPtr(VAPtr); @@ -77,6 +73,11 @@ void StmtIteratorBase::NextDecl(bool ImmediateAdvance) { if (ECD->getInitExpr()) return; } + + if (!decl) { + RawVAPtr = 0; + return; + } } StmtIteratorBase::StmtIteratorBase(ScopedDecl* d) |