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; }