From da9e9120c0559a26000f050ae10bcd9764d04afb Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 27 Apr 2024 08:38:25 -0400 Subject: [PATCH] ToString protection against null type --- BeefLibs/corlib/src/Object.bf | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/BeefLibs/corlib/src/Object.bf b/BeefLibs/corlib/src/Object.bf index 6dc25031..c6e3b37c 100644 --- a/BeefLibs/corlib/src/Object.bf +++ b/BeefLibs/corlib/src/Object.bf @@ -144,18 +144,25 @@ namespace System NumberFormatter.AddrToString((uint)Internal.UnsafeCastToPtr(this), strBuffer); #else let t = RawGetType(); - if (t.IsBoxedStructPtr) + if (t == null) { - let ti = (TypeInstance)t; - let innerPtr = *(void**)((uint8*)Internal.UnsafeCastToPtr(this) + ti.[Friend]mMemberDataOffset); - strBuffer.Append("("); - ti.UnderlyingType.GetFullName(strBuffer); - //strBuffer.AppendF("*)0x{0:A}", (UInt.Simple)(uint)(void*)innerPtr); - strBuffer.Append("*)0x"); - NumberFormatter.AddrToString((uint)(void*)innerPtr, strBuffer); - return; + strBuffer.AppendF($"Type#{(Int.Simple)GetTypeId()}"); + } + else + { + if (t.IsBoxedStructPtr) + { + let ti = (TypeInstance)t; + let innerPtr = *(void**)((uint8*)Internal.UnsafeCastToPtr(this) + ti.[Friend]mMemberDataOffset); + strBuffer.Append("("); + ti.UnderlyingType.GetFullName(strBuffer); + //strBuffer.AppendF("*)0x{0:A}", (UInt.Simple)(uint)(void*)innerPtr); + strBuffer.Append("*)0x"); + NumberFormatter.AddrToString((uint)(void*)innerPtr, strBuffer); + return; + } + t.GetFullName(strBuffer); } - t.GetFullName(strBuffer); strBuffer.Append("@0x"); NumberFormatter.AddrToString((uint)Internal.UnsafeCastToPtr(this), strBuffer); #endif