From 255e47fa1e83fa74ad6c7b3b1ae733b25fa517c5 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 19 Sep 2023 14:00:37 +0200 Subject: [PATCH] Fix crash due to invalid message in Assimp --- Source/Engine/Core/Types/String.cpp | 2 +- Source/Engine/Tools/ModelTool/ModelTool.Assimp.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Core/Types/String.cpp b/Source/Engine/Core/Types/String.cpp index 98b2c08dd..dab000873 100644 --- a/Source/Engine/Core/Types/String.cpp +++ b/Source/Engine/Core/Types/String.cpp @@ -72,7 +72,7 @@ void String::Set(const char* chars, int32 length) } _length = length; } - if (chars) + if (chars && length) StringUtils::ConvertANSI2UTF16(chars, _data, length, _length); } diff --git a/Source/Engine/Tools/ModelTool/ModelTool.Assimp.cpp b/Source/Engine/Tools/ModelTool/ModelTool.Assimp.cpp index daecf8c45..d0fba8f12 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.Assimp.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.Assimp.cpp @@ -42,7 +42,16 @@ public: void write(const char* message) override { String s(message); - s.Replace('\n', ' '); + if (s.Length() <= 0) + return; + for (int32 i = 0; i < s.Length(); i++) + { + Char& c = s[i]; + if (c == '\n') + c = ' '; + else if (c >= 255) + c = '?'; + } LOG(Info, "[Assimp]: {0}", s); } };