From 38e845d4e0aa912736c7d865d018feb652eff453 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 3 Jun 2022 15:25:49 -0700 Subject: [PATCH] Fixed append alloc deleting write-past-end check --- BeefRT/dbg/DbgInternal.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BeefRT/dbg/DbgInternal.cpp b/BeefRT/dbg/DbgInternal.cpp index 0c345d2c..5abfd64b 100644 --- a/BeefRT/dbg/DbgInternal.cpp +++ b/BeefRT/dbg/DbgInternal.cpp @@ -213,10 +213,12 @@ void* bf::System::Runtime::Dbg_GetCrashInfoFunc() void Internal::Dbg_MarkObjectDeleted(bf::System::Object* object) { BF_ASSERT((BFRTFLAGS & BfRtFlags_ObjectHasDebugFlags) != 0); + auto prevFlags = object->mObjectFlags; if ((BFRTFLAGS & BfRtFlags_ObjectHasDebugFlags) != 0) object->mObjectFlags = (BfObjectFlags)((object->mObjectFlags & ~BfObjectFlag_StackAlloc) | BfObjectFlag_Deleted); #ifdef BF_GC_SUPPORTED - gBFGC.ObjectDeleteRequested(object); + if ((prevFlags & BfObjectFlag_Allocated) != 0) + gBFGC.ObjectDeleteRequested(object); #endif }