diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-18 22:57:58 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-18 22:57:58 +0300 |
commit | 04c30021f7097fd3d2aafdbe159d39510ba22e49 (patch) | |
tree | 266092c1bed078a3d8c0a970817d3cd9512f127f /src | |
parent | eb47cc7c4105a6a45f68e955dcb61d9502d9c138 (diff) | |
download | paranucker-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')
-rw-r--r-- | src/analysis/expression.cpp | 9 |
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) |