diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-23 01:37:32 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-23 01:37:32 +0300 |
commit | 116db85570f7500dbf37058136d200fd51033c56 (patch) | |
tree | ec558218faad7a4095eadb30db820381b90eb297 /src/analysis/analysis.cpp | |
parent | e6403d9d129d1975e94a50af6512e0ce2355d2b4 (diff) | |
download | paranucker-116db85570f7500dbf37058136d200fd51033c56.tar.gz paranucker-116db85570f7500dbf37058136d200fd51033c56.tar.bz2 paranucker-116db85570f7500dbf37058136d200fd51033c56.tar.xz paranucker-116db85570f7500dbf37058136d200fd51033c56.zip |
Fix some scope issues. Can be tested with future test 21.
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r-- | src/analysis/analysis.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index 8e7c6bd..f4ae51b 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -122,12 +122,12 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) WalkItem wi2 = wi; analyseNode(node, wi2, wo); removeCheckNullVars(wi2); + addCheckNullVars(wo, wo); addCheckNullVars(wo, wi2); addCheckNullVars(wi2, wi2); wi2.linkedVars = wo.linkedVars; wi2.addNullVars = wo.addNullVars; wi2.linkedVars = wo.linkedVars; -// Log::dumpAttr(node, 1, wo.isReturned); const bool isReturned = wo.isReturned; if (wo.stopWalking) @@ -137,11 +137,16 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) } WalkItem wo2 = wo; + if (command != Command::DumpNullPointers) + Log::dumpWI(node, "walkTree 2 wo2 ", wo2); + FOR_EACH (std::vector<Node*>::iterator, it, node->childs) { walkTree(*it, wi2, wo2); wi2.removeNullVars = wo2.removeNullVars; wi2.addNullVars = wo2.addNullVars; + addCheckNullVars(wi2, wi2); + wo2.checkNullVars = wi2.checkNullVars; wi2.isReturned = wi2.isReturned || wo2.isReturned; wi2.linkedVars = wo2.linkedVars; wo2.stopWalking = false; @@ -151,6 +156,9 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) wo.isReturned = wo.isReturned || isReturned || wo2.isReturned; wo.linkedVars = wi2.linkedVars; + if (command != Command::DumpNullPointers) + Log::dumpWI(node, "walkTree out wo ", wo); + // Log::dumpAttr(node, 2, wo.isReturned); } |