summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r--src/analysis/expression.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 683623a..54d73c2 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -152,20 +152,25 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
if (arg == INDIRECT_REF)
{
// var2 not found in known checking pointer
+ reportParmDeclNullPointer(node,
+ static_cast<IndirectRefNode*>(arg)->ref,
+ wi);
+
if (isNotIn(var2, wi.needCheckNullVars) &&
isNotIn(var2, wi.knownVars))
{
removeVar(wo, var1);
}
-
- reportParmDeclNullPointer(node,
- static_cast<IndirectRefNode*>(arg)->ref,
- wi);
}
else if (!var1.empty())
{
if (var2.empty())
{ // have var1 only (var1 = UNKNOWN or var1 = function(...))
+
+ walkTree(arg, wi, wo);
+ walkTree(node->args[1], wi, wo);
+ wo.stopWalking = true;
+
bool handled(false);
if (node->args[1] == CALL_EXPR && isPointerArg(arg))
{