summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-26 23:51:39 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-26 23:51:39 +0300
commit29ba8b1e49b23f8341886d1881246809c6cd668c (patch)
tree5ff64785f07152dbb7a5d9298e2ba80edca44868 /src/analysis/expression.cpp
parente6c3c8599bf943473abe7eb614b15b5880c27f5c (diff)
downloadparanucker-29ba8b1e49b23f8341886d1881246809c6cd668c.tar.gz
paranucker-29ba8b1e49b23f8341886d1881246809c6cd668c.tar.bz2
paranucker-29ba8b1e49b23f8341886d1881246809c6cd668c.tar.xz
paranucker-29ba8b1e49b23f8341886d1881246809c6cd668c.zip
Dont check first function parameter if function is pointer to function.
Also detect component variable name with field type VAR_DECL.
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r--src/analysis/expression.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 96d84e1..4d4c429 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -91,7 +91,7 @@ std::string getComponentRefVariable(Node *node)
{
IndirectRefNode *indirect = static_cast<IndirectRefNode*>(object);
Node *ref = skipNop(indirect->ref);
- if (ref == PARM_DECL)
+ if (ref == PARM_DECL || ref == VAR_DECL)
{
str.append(ref->label).append("->").append(field->label);
}
@@ -482,6 +482,8 @@ void analyseCallExpr(CallExprNode *node, const WalkItem &wi, WalkItem &wo)
else
{
reportParmDeclNullPointer(node, node->function, wi);
+ if (!getVariableName(node->function).empty())
+ enableCheck = false;
}
}
FOR_EACH (std::vector<Node*>::const_iterator, it, node->args)