From e6b07f9e676a9674e27265c4cde9f9c4b1dde774 Mon Sep 17 00:00:00 2001 From: Maschell Date: Thu, 13 Aug 2020 14:13:01 +0200 Subject: [PATCH] Fix `charToWideChar` in FreeTypeGX --- source/gui/FreeTypeGX.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/source/gui/FreeTypeGX.cpp b/source/gui/FreeTypeGX.cpp index 5c3c53c..b11b6d8 100644 --- a/source/gui/FreeTypeGX.cpp +++ b/source/gui/FreeTypeGX.cpp @@ -70,17 +70,18 @@ FreeTypeGX::~FreeTypeGX() { wchar_t *FreeTypeGX::charToWideChar(const char *strChar) { if (!strChar) { return NULL; } - wchar_t *strWChar = new(std::nothrow) wchar_t[strlen(strChar) + 1]; + size_t len = strlen(strChar) + 1; + wchar_t *strWChar = new(std::nothrow) wchar_t[len]; if (!strWChar) { return NULL; } - int32_t bt = mbstowcs(strWChar, strChar, strlen(strChar)); - if (bt > 0) { - strWChar[bt] = 0; - return strWChar; + size_t bt = mbstowcs(strWChar, strChar, len); + if (bt == (size_t) -1) { + return NULL; } - wchar_t *tempDest = strWChar; - while ((*tempDest++ = *strChar++)); + if (bt < --len) { + strWChar[bt] = 0; + } return strWChar; }