From 1c20242a0668def67d0f76b5cef4d59c239bb7ae Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 18 Aug 2015 14:44:35 +0300 Subject: Fix false positive like this: if (ptr && ptr->func()) --- src/analysis/expression.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index 509faa0..edd1615 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -428,7 +428,22 @@ void analysePointerPlusExpr(PointerPlusExprNode *node, return; VarItem var = getVariableName(node->args[0]); - reportParmDeclNullPointer(node, node->args[0], wi); + if (!var.empty()) + { + if (!var.isNonNull && + isNotIn(var.name, wi.knownNonNullVars)) + { + reportParmDeclNullPointer(node, node->args[0], wi); + } + else if (var.isNonNull) + { + addNonNullVar(wo, var.name); + } + else + { + addUnknownVar(wo, var.name); + } + } } void analyseAddrExpr(AddrExprNode *node, -- cgit v1.2.3-60-g2f50