summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-21 21:21:18 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-21 21:21:18 +0300
commite57f31ed8c663cd3a0c3bac358ad657e6786121f (patch)
treebc68e813a232b52e7f5db536af3cba493692860e
parent09842c339f6ce04b1e4c64258498a05576527961 (diff)
downloadparanucker-e57f31ed8c663cd3a0c3bac358ad657e6786121f.tar.gz
paranucker-e57f31ed8c663cd3a0c3bac358ad657e6786121f.tar.bz2
paranucker-e57f31ed8c663cd3a0c3bac358ad657e6786121f.tar.xz
paranucker-e57f31ed8c663cd3a0c3bac358ad657e6786121f.zip
Fix false positives with detecting variables as pointers in VAR_DECL nodes.
-rw-r--r--src/analysis/expression.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 1964072..ba4802b 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -127,6 +127,9 @@ std::string getComponentRefVariable(Node *node)
if (object == INDIRECT_REF &&
field == FIELD_DECL)
{
+ FieldDeclNode *fieldDecl = static_cast<FieldDeclNode*>(field);
+ if (fieldDecl->fieldType != POINTER_TYPE)
+ return str;
IndirectRefNode *indirect = static_cast<IndirectRefNode*>(object);
Node *ref = skipNop(indirect->ref);
if (ref == PARM_DECL || ref == VAR_DECL)