summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-27 21:34:23 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-27 21:34:23 +0300
commit9c00ff5fb9dd608a8b939196bbdbae098eba36af (patch)
tree7f20d61c69e9c2683a1cb16f85198e34cc3e18c1 /src/analysis/expression.cpp
parent1ec3350589832aef62332ea8f11bdb2660904eb9 (diff)
downloadparanucker-9c00ff5fb9dd608a8b939196bbdbae098eba36af.tar.gz
paranucker-9c00ff5fb9dd608a8b939196bbdbae098eba36af.tar.bz2
paranucker-9c00ff5fb9dd608a8b939196bbdbae098eba36af.tar.xz
paranucker-9c00ff5fb9dd608a8b939196bbdbae098eba36af.zip
Before linking vars check is parent var must be checked.
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r--src/analysis/expression.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index c607e9e..e907792 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -124,8 +124,11 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
std::string var2 = getVariableName(node->args[1]);
if (!var1.empty() && !var2.empty())
{
- wo.addNullVars.insert(var1);
- addLinkedVar(wo, var2, var1);
+ if (wi.checkNullVars.find(var2) != wi.checkNullVars.end())
+ {
+ wo.addNullVars.insert(var1);
+ addLinkedVar(wo, var2, var1);
+ }
}
}
}
@@ -564,6 +567,8 @@ void analyseInitExpr(InitExprNode* node,
std::string var2 = getVariableName(node->args[1]);
if (var1.empty() || var2.empty())
return;
+ if (wi.checkNullVars.find(var2) == wi.checkNullVars.end())
+ return;
wo.addNullVars.insert(var1);
addLinkedVar(wo, var2, var1);
}