diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-19 20:17:03 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-19 20:17:03 +0300 |
commit | 8e88ae66b2cb0a0a0dec18203e9c2c51f2e60622 (patch) | |
tree | 0b395b373e4160d17568089d574d9730d4a0176c | |
parent | 3667185aad71a65af6c286defb978f845a6a55c5 (diff) | |
download | paranucker-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.cpp | 12 |
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; + } } |