From 29e81f3bf46283783c43680c38a7acacff57f455 Mon Sep 17 00:00:00 2001 From: Alexander Batalov Date: Sat, 2 Sep 2023 17:37:21 +0300 Subject: [PATCH] Add target_remove --- src/mapper/mp_targt.cc | 36 ++++++++++++++++++++++++++++++++++++ src/mapper/mp_targt.h | 1 + 2 files changed, 37 insertions(+) diff --git a/src/mapper/mp_targt.cc b/src/mapper/mp_targt.cc index 12b9cc9..b0c4595 100644 --- a/src/mapper/mp_targt.cc +++ b/src/mapper/mp_targt.cc @@ -255,6 +255,42 @@ int target_find_free_subnode(TargetSubNode** subnode_ptr) return 0; } +// 0x49BBD4 +int target_remove(int pid) +{ + TargetNode* node; + TargetSubNode* subnode; + TargetSubNode* subnode_next; + + node = targetlist.tail; + while (node != NULL) { + if (node->subnode.field_0 == pid) { + break; + } + node = node->next; + } + + if (node == NULL) { + return -1; + } + + subnode = node->subnode.next; + + if (node == targetlist.tail) { + targetlist.tail = targetlist.tail->next; + } + + internal_free(node); + + while (subnode != NULL) { + subnode_next = subnode->next; + internal_free(subnode); + subnode = subnode_next; + } + + return 0; +} + // 0x49BCBC int target_remove_all() { diff --git a/src/mapper/mp_targt.h b/src/mapper/mp_targt.h index db84194..3c23959 100644 --- a/src/mapper/mp_targt.h +++ b/src/mapper/mp_targt.h @@ -56,6 +56,7 @@ int target_header_load(); int target_save(int pid); int target_load(int pid, TargetSubNode** subnode_ptr); int target_find_free_subnode(TargetSubNode** subnode_ptr); +int target_remove(int pid); int target_remove_all(); int target_ptr(int pid, TargetSubNode** subnode_ptr); int target_tid_ptr(int pid, int tid, TargetSubNode** subnode_ptr);