summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-18 22:57:58 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-18 22:57:58 +0300
commit04c30021f7097fd3d2aafdbe159d39510ba22e49 (patch)
tree266092c1bed078a3d8c0a970817d3cd9512f127f /src/analysis/expression.cpp
parenteb47cc7c4105a6a45f68e955dcb61d9502d9c138 (diff)
downloadparanucker-04c30021f7097fd3d2aafdbe159d39510ba22e49.tar.gz
paranucker-04c30021f7097fd3d2aafdbe159d39510ba22e49.tar.bz2
paranucker-04c30021f7097fd3d2aafdbe159d39510ba22e49.tar.xz
paranucker-04c30021f7097fd3d2aafdbe159d39510ba22e49.zip
Fix detecting sub nodes in MODIFY_EXPR.
Was missing skipNop call.
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r--src/analysis/expression.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 2162666..ddbffb1 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -167,14 +167,17 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
if (var2.empty())
{ // have var1 only (var1 = UNKNOWN or var1 = function(...))
+ if (node->args.size() < 2)
+ return;
+ Node *arg1 = skipNop(node->args[1]);
walkTree(arg, wi, wo);
- walkTree(node->args[1], wi, wo);
+ walkTree(arg1, wi, wo);
wo.stopWalking = true;
bool handled(false);
- if (node->args[1] == CALL_EXPR && isPointerArg(arg))
+ if (arg1 == CALL_EXPR && isPointerArg(arg))
{
- handled = handleSetVarToFunction(var1, node->args[1], wo);
+ handled = handleSetVarToFunction(var1, arg1, wo);
}
// have var1 only (var1 = UNKNOWN)
if (!handled)