summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analysis/expression.cpp2
-rw-r--r--src/analysis/reports.cpp3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index e3f3816..235aa84 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -302,6 +302,7 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
{
VarItem var1 = getVariableName(arg);
VarItem var2 = getVariableName(node->args[1]);
+ //Log::log("analyseModifyExpr vars: %s, %s\n", var1.name.c_str(), var2.name.c_str());
Node *arg0 = arg;
if (arg == COMPONENT_REF)
@@ -370,6 +371,7 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
}
else
{
+ reportParmDeclLeftNullPointer(node, node->args[0], wi);
reportParmDeclNullPointer(node, node->args[1], wi);
}
}
diff --git a/src/analysis/reports.cpp b/src/analysis/reports.cpp
index 7e7ceb3..0f4b197 100644
--- a/src/analysis/reports.cpp
+++ b/src/analysis/reports.cpp
@@ -123,7 +123,8 @@ void reportParmDeclLeftNullPointer(Node *mainNode,
FOR_EACH (var, vars)
{
if (!var.isNonNull &&
- isIn(var.name, wi.needCheckNullVars))
+ (isIn(var.name, wi.needCheckNullVars) ||
+ isNotIn(var.name, wi.knownVars)))
{
Log::warn(findBackLocation(mainNode),
"Using field '%s' without checking for null pointer",