From bf2974b6cc9df625e820f19924dc92a925424b15 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 26 Mar 2025 19:47:39 +0100 Subject: [PATCH] Fix reading Variant Type in C# --- Source/Engine/Utilities/VariantUtils.cs | 45 +++++++++++++++---------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/Source/Engine/Utilities/VariantUtils.cs b/Source/Engine/Utilities/VariantUtils.cs index 0f43ea17c..f199c6095 100644 --- a/Source/Engine/Utilities/VariantUtils.cs +++ b/Source/Engine/Utilities/VariantUtils.cs @@ -354,14 +354,17 @@ namespace FlaxEngine.Utilities if (typeNameLength == int.MaxValue) { typeNameLength = stream.ReadInt32(); - var data = new byte[typeNameLength]; - for (int i = 0; i < typeNameLength; i++) + if (typeNameLength > 0) { - var c = stream.ReadByte(); - data[i] = (byte)(c ^ 77); + var data = new byte[typeNameLength]; + for (int i = 0; i < typeNameLength; i++) + { + var c = stream.ReadByte(); + data[i] = (byte)(c ^ 77); + } + var typeName = System.Text.Encoding.ASCII.GetString(data); + return TypeUtils.GetType(typeName); } - var typeName = System.Text.Encoding.ASCII.GetString(data); - return TypeUtils.GetType(typeName); } if (typeNameLength > 0) { @@ -426,14 +429,17 @@ namespace FlaxEngine.Utilities if (typeNameLength == int.MaxValue) { typeNameLength = stream.ReadInt32(); - var data = new byte[typeNameLength]; - for (int i = 0; i < typeNameLength; i++) + if (typeNameLength > 0) { - var c = stream.ReadByte(); - data[i] = (byte)(c ^ 77); + var data = new byte[typeNameLength]; + for (int i = 0; i < typeNameLength; i++) + { + var c = stream.ReadByte(); + data[i] = (byte)(c ^ 77); + } + var typeName = System.Text.Encoding.ASCII.GetString(data); + return TypeUtils.GetManagedType(typeName); } - var typeName = System.Text.Encoding.ASCII.GetString(data); - return TypeUtils.GetManagedType(typeName); } if (typeNameLength > 0) { @@ -500,14 +506,17 @@ namespace FlaxEngine.Utilities if (typeNameLength == int.MaxValue) { typeNameLength = stream.ReadInt32(); - var data = new byte[typeNameLength]; - for (int i = 0; i < typeNameLength; i++) + if (typeNameLength > 0) { - var c = stream.ReadByte(); - data[i] = (byte)(c ^ 77); + var data = new byte[typeNameLength]; + for (int i = 0; i < typeNameLength; i++) + { + var c = stream.ReadByte(); + data[i] = (byte)(c ^ 77); + } + typeName = System.Text.Encoding.ASCII.GetString(data); + type = TypeUtils.GetManagedType(typeName); } - typeName = System.Text.Encoding.ASCII.GetString(data); - type = TypeUtils.GetManagedType(typeName); } else if (typeNameLength > 0) {