summaryrefslogtreecommitdiff
path: root/src/disasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/disasm.cpp')
-rw-r--r--src/disasm.cpp23
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;
}