Fix using managed arrays with Variant in dotnet7

This commit is contained in:
Wojtek Figat
2023-03-27 19:41:53 +02:00
parent 8d7225c056
commit ed13de2d5b
7 changed files with 121 additions and 84 deletions

View File

@@ -389,7 +389,8 @@ Variant MUtils::UnboxVariant(MObject* value)
case MTypes::Array:
{
void* ptr = MCore::Array::GetAddress((MArray*)value);
if (klass->GetElementClass() == MCore::TypeCache::Byte)
MClass* elementClass = klass->GetElementClass();
if (elementClass == MCore::TypeCache::Byte)
{
Variant v;
v.SetBlob(ptr, MCore::Array::GetLength((MArray*)value));
@@ -401,7 +402,6 @@ Variant MUtils::UnboxVariant(MObject* value)
auto& array = v.AsArray();
array.Resize(MCore::Array::GetLength((MArray*)value));
const StringAnsiView elementTypename(*fullname, fullname.Length() - 2);
MClass* elementClass = klass->GetElementClass();
const int32 elementSize = elementClass->GetInstanceSize();
if (elementClass->IsEnum())
{