From fe2f2fcfdcd2fb6b7ef1c35b5acfbe5db338596b Mon Sep 17 00:00:00 2001 From: NepDisk Date: Mon, 24 Aug 2026 02:18:26 -0400 Subject: [PATCH] Fix memory block not being moved to correct taglist with Z_ChangeTag I didn't even notice this one at first, whoops! Also added proper checking to prevent this from happening again. --- src/z_zone.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/z_zone.cpp b/src/z_zone.cpp index b77e3d1ea..ff050f2bf 100644 --- a/src/z_zone.cpp +++ b/src/z_zone.cpp @@ -580,6 +580,10 @@ void Z_CheckHeap(INT32 tag) HeapError(" has the wrong ID"); } #endif + if (block->tag != j) + { + HeapError(va(" block is contained in the wrong headlist (got: %d expected: %zu)", block->tag, j)); + } } } } @@ -616,6 +620,14 @@ void Z_ChangeTag(void *ptr, INT32 tag) I_Error("Internal memory management error: " "tried to make block purgable but it has no owner"); + block->prev->next = block->next; + block->next->prev = block->prev; + + block->next = headlist[tag].next; + block->prev = &headlist[tag]; + headlist[tag].next = block; + block->next->prev = block; + block->tag = tag; }