From d0027b4b31f008465a425f4673577828d73e2a7b Mon Sep 17 00:00:00 2001 From: nmzik Date: Tue, 27 Oct 2026 20:40:53 +0100 Subject: [PATCH] memory: retain allocation nodes on partial release --- src/kernel/memory.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/kernel/memory.cpp b/src/kernel/memory.cpp index 86fb55af0..c1249bf6d 100644 --- a/src/kernel/memory.cpp +++ b/src/kernel/memory.cpp @@ -1235,11 +1235,10 @@ bool PhysicalMemory::Release(uint64_t start, size_t len) { if (block.kind == AllocationKind::Automatic) { RemoveFreeRange(m_automatic_free, start, len); } - m_physical.erase(it); if (block.start_addr < start) { - auto left = block; - left.size = start - block.start_addr; - m_physical.emplace(left.start_addr, left); + it->second.size = start - block.start_addr; + } else { + m_physical.erase(it); } if (start + len < block.start_addr + block.size) { auto right = block;