From cc7e32583647dd8df4700f811798c996dd3a2598 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:44:04 +0200 Subject: [PATCH 1/2] fix(quotedprintable): Fix assert in AsciiStringToQuotedPrintable during map cache generation (#1659) --- .../Code/GameEngine/Source/Common/System/QuotedPrintable.cpp | 4 ++-- .../Code/GameEngine/Source/Common/System/QuotedPrintable.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp b/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp index 0edf836cef..c8e15f0827 100644 --- a/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp +++ b/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp @@ -56,7 +56,7 @@ static int hexDigitToInt(char c) AsciiString UnicodeStringToQuotedPrintable(UnicodeString original) { static char dest[1024]; - const char *src = (const char *)original.str(); + const unsigned char *src = reinterpret_cast(original.str()); int i=0; while ( !(src[0]=='\0' && src[1]=='\0') && i<1021 ) { @@ -91,7 +91,7 @@ AsciiString UnicodeStringToQuotedPrintable(UnicodeString original) AsciiString AsciiStringToQuotedPrintable(AsciiString original) { static char dest[1024]; - const char *src = (const char *)original.str(); + const unsigned char *src = reinterpret_cast(original.str()); int i=0; while ( src[0]!='\0' && i<1021 ) { diff --git a/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp b/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp index a4181645d6..6326765853 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp @@ -56,7 +56,7 @@ static int hexDigitToInt(char c) AsciiString UnicodeStringToQuotedPrintable(UnicodeString original) { static char dest[1024]; - const char *src = (const char *)original.str(); + const unsigned char *src = reinterpret_cast(original.str()); int i=0; while ( !(src[0]=='\0' && src[1]=='\0') && i<1021 ) { @@ -91,7 +91,7 @@ AsciiString UnicodeStringToQuotedPrintable(UnicodeString original) AsciiString AsciiStringToQuotedPrintable(AsciiString original) { static char dest[1024]; - const char *src = (const char *)original.str(); + const unsigned char *src = reinterpret_cast(original.str()); int i=0; while ( src[0]!='\0' && i<1021 ) { From 26e63667067e45a1c49589f03413e3af75ca1778 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:45:12 +0200 Subject: [PATCH 2/2] refactor(quotedprintable): Simplify and modernize code in QuotedPrintable (#1659) --- .../Source/Common/System/QuotedPrintable.cpp | 21 ++++++++++--------- .../Source/Common/System/QuotedPrintable.cpp | 21 ++++++++++--------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp b/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp index c8e15f0827..3294199143 100644 --- a/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp +++ b/Generals/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp @@ -65,7 +65,8 @@ AsciiString UnicodeStringToQuotedPrintable(UnicodeString original) dest[i++] = MAGIC_CHAR; dest[i++] = intToHexDigit((*src)>>4); dest[i++] = intToHexDigit((*src)&0xf); - } else + } + else { dest[i++] = *src; } @@ -100,7 +101,8 @@ AsciiString AsciiStringToQuotedPrintable(AsciiString original) dest[i++] = MAGIC_CHAR; dest[i++] = intToHexDigit((*src)>>4); dest[i++] = intToHexDigit((*src)&0xf); - } else + } + else { dest[i++] = *src; } @@ -117,8 +119,8 @@ UnicodeString QuotedPrintableToUnicodeString(AsciiString original) static WideChar dest[1024]; int i=0; - unsigned char *c = (unsigned char *)dest; - const unsigned char *src = (const unsigned char *)original.str(); + unsigned char *c = reinterpret_cast(dest); + const unsigned char *src = reinterpret_cast(original.str()); while (*src && i<1023) { @@ -159,18 +161,17 @@ UnicodeString QuotedPrintableToUnicodeString(AsciiString original) *c = 0; - UnicodeString out(dest); - return out; + return dest; } // Convert ascii quoted-printable strings into ascii strings AsciiString QuotedPrintableToAsciiString(AsciiString original) { - static unsigned char dest[1024]; + static char dest[1024]; int i=0; - unsigned char *c = (unsigned char *)dest; - const unsigned char *src = (const unsigned char *)original.str(); + unsigned char *c = reinterpret_cast(dest); + const unsigned char *src = reinterpret_cast(original.str()); while (*src && i<1023) { @@ -200,6 +201,6 @@ AsciiString QuotedPrintableToAsciiString(AsciiString original) *c = 0; - return AsciiString((const char *)dest); + return dest; } diff --git a/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp b/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp index 6326765853..69c8f41edd 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/System/QuotedPrintable.cpp @@ -65,7 +65,8 @@ AsciiString UnicodeStringToQuotedPrintable(UnicodeString original) dest[i++] = MAGIC_CHAR; dest[i++] = intToHexDigit((*src)>>4); dest[i++] = intToHexDigit((*src)&0xf); - } else + } + else { dest[i++] = *src; } @@ -100,7 +101,8 @@ AsciiString AsciiStringToQuotedPrintable(AsciiString original) dest[i++] = MAGIC_CHAR; dest[i++] = intToHexDigit((*src)>>4); dest[i++] = intToHexDigit((*src)&0xf); - } else + } + else { dest[i++] = *src; } @@ -117,8 +119,8 @@ UnicodeString QuotedPrintableToUnicodeString(AsciiString original) static WideChar dest[1024]; int i=0; - unsigned char *c = (unsigned char *)dest; - const unsigned char *src = (const unsigned char *)original.str(); + unsigned char *c = reinterpret_cast(dest); + const unsigned char *src = reinterpret_cast(original.str()); while (*src && i<1023) { @@ -159,18 +161,17 @@ UnicodeString QuotedPrintableToUnicodeString(AsciiString original) *c = 0; - UnicodeString out(dest); - return out; + return dest; } // Convert ascii quoted-printable strings into ascii strings AsciiString QuotedPrintableToAsciiString(AsciiString original) { - static unsigned char dest[1024]; + static char dest[1024]; int i=0; - unsigned char *c = (unsigned char *)dest; - const unsigned char *src = (const unsigned char *)original.str(); + unsigned char *c = reinterpret_cast(dest); + const unsigned char *src = reinterpret_cast(original.str()); while (*src && i<1023) { @@ -200,6 +201,6 @@ AsciiString QuotedPrintableToAsciiString(AsciiString original) *c = 0; - return AsciiString((const char *)dest); + return dest; }