From f4d236d353a1dec31261995446e702bd90513c99 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 26 Feb 2024 19:01:46 +0100 Subject: [PATCH] Fix crash on invalid string converted to managed string --- Source/Engine/Scripting/ManagedCLR/MUtils.cpp | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Source/Engine/Scripting/ManagedCLR/MUtils.cpp b/Source/Engine/Scripting/ManagedCLR/MUtils.cpp index 0d4428d81..c0c3cdc45 100644 --- a/Source/Engine/Scripting/ManagedCLR/MUtils.cpp +++ b/Source/Engine/Scripting/ManagedCLR/MUtils.cpp @@ -99,44 +99,50 @@ MString* MUtils::ToString(const char* str) MString* MUtils::ToString(const StringAnsi& str) { - if (str.IsEmpty()) + const int32 len = str.Length(); + if (len <= 0) return MCore::String::GetEmpty(); - return MCore::String::New(str.Get(), str.Length()); + return MCore::String::New(str.Get(), len); } MString* MUtils::ToString(const String& str) { - if (str.IsEmpty()) + const int32 len = str.Length(); + if (len <= 0) return MCore::String::GetEmpty(); - return MCore::String::New(str.Get(), str.Length()); + return MCore::String::New(str.Get(), len); } MString* MUtils::ToString(const String& str, MDomain* domain) { - if (str.IsEmpty()) + const int32 len = str.Length(); + if (len <= 0) return MCore::String::GetEmpty(domain); - return MCore::String::New(str.Get(), str.Length(), domain); + return MCore::String::New(str.Get(), len, domain); } MString* MUtils::ToString(const StringAnsiView& str) { - if (str.IsEmpty()) + const int32 len = str.Length(); + if (len <= 0) return MCore::String::GetEmpty(); return MCore::String::New(str.Get(), str.Length()); } MString* MUtils::ToString(const StringView& str) { - if (str.IsEmpty()) + const int32 len = str.Length(); + if (len <= 0) return MCore::String::GetEmpty(); - return MCore::String::New(str.Get(), str.Length()); + return MCore::String::New(str.Get(), len); } MString* MUtils::ToString(const StringView& str, MDomain* domain) { - if (str.IsEmpty()) + const int32 len = str.Length(); + if (len <= 0) return MCore::String::GetEmpty(domain); - return MCore::String::New(str.Get(), str.Length(), domain); + return MCore::String::New(str.Get(), len, domain); } ScriptingTypeHandle MUtils::UnboxScriptingTypeHandle(MTypeObject* value)