diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-24 16:48:35 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-24 16:48:35 +0300 |
commit | 5872f7799cc09b33dc1f0101114cad2cdb1784b7 (patch) | |
tree | eea951740e7f90ad5dce02c00bd52dc7c11d070e /src/analysis/expression.cpp | |
parent | b91ccde7842f56971dc388a56896b334559548cc (diff) | |
download | paranucker-5872f7799cc09b33dc1f0101114cad2cdb1784b7.tar.gz paranucker-5872f7799cc09b33dc1f0101114cad2cdb1784b7.tar.bz2 paranucker-5872f7799cc09b33dc1f0101114cad2cdb1784b7.tar.xz paranucker-5872f7799cc09b33dc1f0101114cad2cdb1784b7.zip |
Fix false positive report for first pointer argument for function (not method).
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r-- | src/analysis/expression.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index 54cf738..13911de 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -43,6 +43,7 @@ #include "nodes/expr/truthor_expr.h" #include "nodes/expr/truthorif_expr.h" +#include "nodes/decl/function_decl.h" #include "nodes/decl/var_decl.h" #include "nodes/ref/indirect_ref.h" @@ -407,9 +408,15 @@ void analyseCallExpr(CallExprNode *node, const WalkItem &wi, WalkItem &wo) AddrExprNode *addrNode = static_cast<AddrExprNode*>(node->function); if (!addrNode->args.empty()) { - if (addrNode->args[0]->nodeType == FUNCTION_TYPE) + if (addrNode->args[0]->nodeType == FUNCTION_DECL) { - enableCheck = false; + FunctionDeclNode *declNode = static_cast<FunctionDeclNode*>( + addrNode->args[0]); + if (declNode->functionType && + declNode->functionType->nodeType == FUNCTION_TYPE) + { + enableCheck = false; + } } } } |