From befcbf3ddcbaeb5aa48081e2ccaea74e99a57166 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 26 Sep 2020 09:16:29 -0700 Subject: [PATCH] Made GetBoxed work for pointers to value types --- BeefLibs/corlib/src/Variant.bf | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/BeefLibs/corlib/src/Variant.bf b/BeefLibs/corlib/src/Variant.bf index 06198b54..8755920f 100644 --- a/BeefLibs/corlib/src/Variant.bf +++ b/BeefLibs/corlib/src/Variant.bf @@ -313,14 +313,24 @@ namespace System if (IsObject) return .Err; + var self = this; var type = VariantType; + void* dataPtr = self.DataPtr; + if (type.IsPointer) + { + type = type.UnderlyingType; + var boxedType = type.BoxedType; + if (boxedType == null) + return .Err; + dataPtr = (void*)mData; + } + var boxedType = type.BoxedType; if (boxedType == null) return .Err; - var self = this; var object = Try!(boxedType.CreateObject()); - Internal.MemCpy((uint8*)Internal.UnsafeCastToPtr(object) + boxedType.[Friend]mMemberDataOffset, self.DataPtr, type.Size); + Internal.MemCpy((uint8*)Internal.UnsafeCastToPtr(object) + boxedType.[Friend]mMemberDataOffset, dataPtr, type.Size); return object; }