diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-10 01:16:03 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-10 01:22:26 +0300 |
commit | 41a188424ec40c7900de1ff28d792753d5a16e85 (patch) | |
tree | 4025f12fbccf2f5443e3736c01411f01caf7b2fc /src | |
parent | 1ae0ec902a7d242c9f6a5cf365190c1592134d53 (diff) | |
download | paranucker-41a188424ec40c7900de1ff28d792753d5a16e85.tar.gz paranucker-41a188424ec40c7900de1ff28d792753d5a16e85.tar.bz2 paranucker-41a188424ec40c7900de1ff28d792753d5a16e85.tar.xz paranucker-41a188424ec40c7900de1ff28d792753d5a16e85.zip |
In WHILE_STMT also check condition after while body.
This allow detect issue like this:
if (!ptr)
return;
while (ptr->num)
{
...
ptr = someothervalue;
}
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/statement.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/analysis/statement.cpp b/src/analysis/statement.cpp index 1d64ac3..a9bfef4 100644 --- a/src/analysis/statement.cpp +++ b/src/analysis/statement.cpp @@ -232,6 +232,11 @@ void analyseWhileStmt(WhileStmtNode *node, const WalkItem &wi, WalkItem &wo) else if (bodyNode) { addNeedCheckNullVars2(wo2, wo); + + wci = wo; + wco = wo; + walkTree(condNode, wci, wco); + Log::dumpWI(node, "wco2 ", wco); } wo.isReturned = false; |