summaryrefslogtreecommitdiff
path: root/src/analysis/analysis.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-23 01:37:32 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-23 01:37:32 +0300
commit116db85570f7500dbf37058136d200fd51033c56 (patch)
treeec558218faad7a4095eadb30db820381b90eb297 /src/analysis/analysis.cpp
parente6403d9d129d1975e94a50af6512e0ce2355d2b4 (diff)
downloadparanucker-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.cpp10
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);
}