aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AST/StmtIterator.cpp11
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)