diff options
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r-- | src/analysis/expression.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index b7af406..70e25a3 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -289,6 +289,15 @@ std::vector<VarItem> getComponentRefLeftParts(Node *node) Node *ref = skipNop(indirect->ref); if (ref && !isValidVar(ref->label)) return str; + if (ref == PARM_DECL) + { + ParmDeclNode *parmDecl = static_cast<ParmDeclNode*>(ref); + if (skipNop(parmDecl->declType) != nullptr && + skipNop(parmDecl->declType) != POINTER_TYPE) + { + return str; + } + } if (ref == VAR_DECL) { VarDeclNode *varDecl = static_cast<VarDeclNode*>(ref); @@ -298,6 +307,8 @@ std::vector<VarItem> getComponentRefLeftParts(Node *node) { isNonNull = true; } + if (varDecl->varType != POINTER_TYPE) + return str; } if (ref == PARM_DECL || ref == VAR_DECL) { |