From 29de3b1d3fbc5efd99c08b8f41e4353d8216faf5 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 29 Oct 2026 22:50:07 +0000 Subject: [PATCH] Decompile fn_20939 (TreeSubMap::Clear) Batch #3592 by bigodeira: 0 byte-identical, 1 confirmed by peer review. - fn_20939 TreeSubMap::Clear: logic confirmed by peer review Peer-reviewed-by: eAthena, meitogi, Lumen Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Script/NLuaState.cpp | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Source/Script/NLuaState.cpp b/Source/Script/NLuaState.cpp index 4fd78211..2020af50 100644 --- a/Source/Script/NLuaState.cpp +++ b/Source/Script/NLuaState.cpp @@ -5,6 +5,47 @@ extern "C" { #include } +// GLOBAL: gl_24849 +void* g_entryQueueMgr = nullptr; + +struct TreeSubNode { + TreeSubNode* left; + TreeSubNode* parent; + TreeSubNode* right; + char color; + char isnil; +}; + +struct TreeSubMap { + TreeSubNode* head; + unsigned int size; + + void Clear(); + void EraseSubtree(TreeSubMap& al, TreeSubNode* node); +}; + +// OFFSET: 0x00CA4AE0 +// FUNCTION: fn_20939 +void TreeSubMap::Clear() { + TreeSubNode* cur = this->head->parent; + while (cur->isnil == 0) { + this->EraseSubtree(*this, cur->right); + TreeSubNode* next = cur->left; + ::operator delete(cur, 0x18); + cur = next; + } + this->head->parent = this->head; + this->head->left = this->head; + this->head->right = this->head; + this->size = 0; +} + +// OFFSET: 0x00CA4B60 +// FUNCTION: fn_20940 +void* sub_CA4B60() { + return g_entryQueueMgr; +} + // OFFSET: 0x00CA4CF0 // FUNCTION: fn_20941 NLuaState::NLuaState() : m_state(nullptr), m_isValid(false) {