diff --git a/BeefLibs/corlib/src/Variant.bf b/BeefLibs/corlib/src/Variant.bf index 8755920f..06198b54 100644 --- a/BeefLibs/corlib/src/Variant.bf +++ b/BeefLibs/corlib/src/Variant.bf @@ -313,24 +313,14 @@ 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, dataPtr, type.Size); + Internal.MemCpy((uint8*)Internal.UnsafeCastToPtr(object) + boxedType.[Friend]mMemberDataOffset, self.DataPtr, type.Size); return object; } diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 9baeb142..eeea5b5e 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -4934,7 +4934,7 @@ BfIRValue BfModule::CreateTypeData(BfType* type, Dictionary& usedStrin } int boxedTypeId = 0; - if (type->IsValueType()) + if ((type->IsValueType()) || (type->IsWrappableType())) { auto boxedType = CreateBoxedType(type, false); if ((boxedType != NULL) && (boxedType->mIsReified))