diff options
Diffstat (limited to 'src/disasm.cpp')
-rw-r--r-- | src/disasm.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/disasm.cpp b/src/disasm.cpp index a7dc07b..35c2351 100644 --- a/src/disasm.cpp +++ b/src/disasm.cpp @@ -11,29 +11,22 @@ void DisasmNode::AddReferencedBy(const uint32_t address_from, const ReferenceType ref_type) { - ReferenceNode *node{}; + ReferenceRecord *node = new ReferenceRecord{nullptr, ref_type, address_from}; + assert(node); if (this->last_ref_by) { - node = this->last_ref_by; + this->last_ref_by->next = node; } else { - node = new ReferenceNode{}; - assert(node); - this->ref_by = this->last_ref_by = node; - } - node->refs[node->refs_count] = ReferenceRecord{ref_type, address_from}; - node->refs_count++; - if (node->refs_count >= kRefsCountPerBuffer) { - ReferenceNode *new_node = new ReferenceNode{}; - assert(new_node); - node->next = new_node; - this->last_ref_by = new_node; + assert(nullptr == this->ref_by); + this->ref_by = node; } + this->last_ref_by = node; } DisasmNode::~DisasmNode() { - ReferenceNode *ref{this->ref_by}; + ReferenceRecord *ref{this->ref_by}; while (ref) { - ReferenceNode *prev = ref; + ReferenceRecord *prev = ref; ref = ref->next; delete prev; } |