diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/expression.cpp | 4 | ||||
-rw-r--r-- | src/nodes/ref/indirect_ref.h | 7 | ||||
-rw-r--r-- | src/parsers/ref/indirect_ref.cpp | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index 8185419..d3fbf73 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -49,9 +49,9 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo) { IndirectRefNode *refNode = static_cast<IndirectRefNode*>(arg); // need atleast one arg for check - if (refNode->args.empty()) + if (refNode->ref == nullptr) return; - arg = refNode->args[0]; + arg = refNode->ref; if (arg->nodeType == PARM_DECL) { if (wi.checkNullVars.find(arg->label) != wi.checkNullVars.end()) diff --git a/src/nodes/ref/indirect_ref.h b/src/nodes/ref/indirect_ref.h index 18f8321..2173ca7 100644 --- a/src/nodes/ref/indirect_ref.h +++ b/src/nodes/ref/indirect_ref.h @@ -22,14 +22,19 @@ #include "nodes/base/ref.h" +#include "nodes/base/decl.h" + #include <string> struct IndirectRefNode : public RefNode { IndirectRefNode() : - RefNode() + RefNode(), + ref(nullptr) { } + + DeclNode *ref; }; #endif // NODES_REF_INDIRECTREFNODE_H diff --git a/src/parsers/ref/indirect_ref.cpp b/src/parsers/ref/indirect_ref.cpp index d4ef67b..cc93217 100644 --- a/src/parsers/ref/indirect_ref.cpp +++ b/src/parsers/ref/indirect_ref.cpp @@ -37,7 +37,7 @@ void parseIndirectRefNode(IndirectRefNode *node) // if (!node->parseChilds) // return; - fillRefOperands(node); + node->ref = static_cast<DeclNode*>(getRefOperand(node, 0, "ref")); } } |