From 116db85570f7500dbf37058136d200fd51033c56 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 23 Jun 2015 01:37:32 +0300 Subject: Fix some scope issues. Can be tested with future test 21. --- src/analysis/analysis.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/analysis/analysis.cpp') 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::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); } -- cgit v1.2.3-60-g2f50