summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-17 17:06:42 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-17 17:25:25 +0300
commitf92d8d4c27a2c8602ac5ec888fc344d01a5da5cc (patch)
tree3a1cfb6c043dd7ee714f41418f2926d8db8ebf32 /src/analysis/expression.cpp
parentb2bcd7a94f4d44e5767b0d95881d331a567fa6f2 (diff)
downloadparanucker-f92d8d4c27a2c8602ac5ec888fc344d01a5da5cc.tar.gz
paranucker-f92d8d4c27a2c8602ac5ec888fc344d01a5da5cc.tar.bz2
paranucker-f92d8d4c27a2c8602ac5ec888fc344d01a5da5cc.tar.xz
paranucker-f92d8d4c27a2c8602ac5ec888fc344d01a5da5cc.zip
Extract null pointer reporting code into separate function.
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r--src/analysis/expression.cpp36
1 files changed, 5 insertions, 31 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index d3fbf73..0fbb9c5 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -47,19 +47,9 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
Node *arg = node->args[0];
if (arg && arg->nodeType == INDIRECT_REF)
{
- IndirectRefNode *refNode = static_cast<IndirectRefNode*>(arg);
- // need atleast one arg for check
- if (refNode->ref == nullptr)
- return;
- arg = refNode->ref;
- if (arg->nodeType == PARM_DECL)
- {
- if (wi.checkNullVars.find(arg->label) != wi.checkNullVars.end())
- {
- Log::warn(findBackLocation(node),
- "Using variable without check for NULL");
- }
- }
+ reportParmDeclNullPointer(node,
+ static_cast<IndirectRefNode*>(arg)->ref,
+ wi);
}
}
@@ -69,15 +59,7 @@ void analysePointerPlusExpr(PointerPlusExprNode *node, const WalkItem &wi, WalkI
if (node->args.empty() || command == FindArgs)
return;
- Node *arg = node->args[0];
- if (arg && arg->nodeType == PARM_DECL)
- {
- if (wi.checkNullVars.find(arg->label) != wi.checkNullVars.end())
- {
- Log::warn(findBackLocation(node),
- "Using variable without check for NULL");
- }
- }
+ reportParmDeclNullPointer(node, node->args[0], wi);
}
void analyseAddrExpr(AddrExprNode *node, const WalkItem &wi, WalkItem &wo)
@@ -86,15 +68,7 @@ void analyseAddrExpr(AddrExprNode *node, const WalkItem &wi, WalkItem &wo)
if (node->args.empty() || command == FindArgs)
return;
- Node *arg = node->args[0];
- if (arg && arg->nodeType == PARM_DECL)
- {
- if (wi.checkNullVars.find(arg->label) != wi.checkNullVars.end())
- {
- Log::warn(findBackLocation(node),
- "Using variable without check for NULL");
- }
- }
+ reportParmDeclNullPointer(node, node->args[0], wi);
}
}