diff options
author | Jérôme Martinez <jerome@mediaarea.net> | 2020-03-30 13:23:27 +0300 |
---|---|---|
committer | Jérôme Martinez <jerome@mediaarea.net> | 2020-03-30 13:23:27 +0300 |
commit | 57254600a138bacaefe5a6e00514ec205597ee5b (patch) | |
tree | 8ef220c2360c7db5e3f453f71923e6c421c8c6dd /Source | |
parent | 7f5b6caba6f23943580a1bd00ab21ed1d3ea0e1a (diff) |
x Ztring: fix conversion from CC3/CC4 with trailing 0
Diffstat (limited to 'Source')
-rw-r--r-- | Source/ZenLib/Ztring.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/ZenLib/Ztring.cpp b/Source/ZenLib/Ztring.cpp index 3f5d8f4..6b705c3 100644 --- a/Source/ZenLib/Ztring.cpp +++ b/Source/ZenLib/Ztring.cpp @@ -744,6 +744,9 @@ Ztring& Ztring::From_CC4 (const int32u S) int32u Value=(S&(0xFF<<i))>>i;
if (Value<0x20)
{
+ if (!i || (i!=24 && !(S&(0xFFFFFFFF>>(32-i)))))
+ return *this; // Trailing 0 are fine
+
// Not valid, using 0x as fallback
clear();
append(__T("0x"));
@@ -766,6 +769,9 @@ Ztring& Ztring::From_CC3 (const int32u S) int32u Value=(S&(0xFF<<i))>>i;
if (Value<0x20)
{
+ if (!i || (i!=16 && !(S&(0xFFFFFF>>(24-i)))))
+ return *this; // Trailing 0 are fine
+
// Not valid, using 0x as fallback
clear();
append(__T("0x"));
|