summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-19 20:17:03 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-19 20:17:03 +0300
commit8e88ae66b2cb0a0a0dec18203e9c2c51f2e60622 (patch)
tree0b395b373e4160d17568089d574d9730d4a0176c
parent3667185aad71a65af6c286defb978f845a6a55c5 (diff)
downloadparanucker-8e88ae66b2cb0a0a0dec18203e9c2c51f2e60622.tar.gz
paranucker-8e88ae66b2cb0a0a0dec18203e9c2c51f2e60622.tar.bz2
paranucker-8e88ae66b2cb0a0a0dec18203e9c2c51f2e60622.tar.xz
paranucker-8e88ae66b2cb0a0a0dec18203e9c2c51f2e60622.zip
Fix issue if both "if" branches terminated by return.
-rw-r--r--src/analysis/statement.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/analysis/statement.cpp b/src/analysis/statement.cpp
index f83d849..335df2b 100644
--- a/src/analysis/statement.cpp
+++ b/src/analysis/statement.cpp
@@ -103,8 +103,20 @@ void analyseIfStmt(IfStmtNode *node, const WalkItem &wi, WalkItem &wo)
}
}
+ // special case where all branches is ended.
+ if (returned && wo.isReturned)
+ {
+ FOR_EACH (std::set<std::string>::const_iterator,
+ it,
+ wo.checkNullVars)
+ {
+ wo.removeNullVars.insert(*it);
+ }
+ }
+
wo.stopWalking = true;
wo.isReturned = false;
+
}
}