2
0
Эх сурвалжийг харах

Fixed CreateObject append alloc for non-debug-gc

Brian Fiete 3 жил өмнө
parent
commit
fd92b4ba93

+ 10 - 3
BeefLibs/corlib/src/Reflection/TypeInstance.bf

@@ -174,15 +174,22 @@ namespace System.Reflection
 				}
 			}
 
-#if BF_ENABLE_OBJECT_DEBUG_FLAGS
+#if BF_ENABLE_REALTIME_LEAK_CHECK
 			int32 stackCount = Compiler.Options.AllocStackCount;
 			if (mAllocStackCountOverride != 0)
 				stackCount = mAllocStackCountOverride;
 			obj = Internal.Dbg_ObjectAlloc(mTypeClassVData, allocSize, mInstAlign, stackCount);
 #else
-			void* mem = new [Align(16)] uint8[mInstSize]* (?);
+			void* mem = new [Align(16)] uint8[allocSize]* (?);
 			obj = Internal.UnsafeCastToObject(mem);
-			obj.[Friend]mClassVData = (.)(void*)mTypeClassVData;
+			*(void**)mem = (void*)mTypeClassVData;
+#if BF_ENABLE_OBJECT_DEBUG_FLAGS
+			Internal.Dbg_ObjectAllocated(obj, allocSize, (.)(void*)mTypeClassVData);
+			*(int*)mem |= 0x04/*BfObjectFlag_Allocate*/;
+#else
+			*(void**)mem = (void*)mTypeClassVData;
+#endif
+
 #endif
 			Internal.MemSet((uint8*)Internal.UnsafeCastToPtr(obj) + objType.mInstSize, 0, mInstSize - objType.mInstSize);
 			if (methodInfo.IsInitialized)