diff --git a/BeefLibs/corlib/src/Environment.bf b/BeefLibs/corlib/src/Environment.bf index 40841b1f..c785f393 100644 --- a/BeefLibs/corlib/src/Environment.bf +++ b/BeefLibs/corlib/src/Environment.bf @@ -132,7 +132,7 @@ namespace System int allocSize = UTF16.GetEncodedLen(key); char16* encodedData = scope char16[allocSize]*; int encodedLen = UTF16.Encode(key, encodedData, allocSize); - int byteLen = (encodedLen - 1) * 2; + int byteLen = encodedLen * 2; Internal.MemCpy(data.GrowUnitialized(byteLen), encodedData, byteLen); data.Add((uint8)'='); data.Add((uint8)0); @@ -141,7 +141,7 @@ namespace System allocSize = UTF16.GetEncodedLen(value); encodedData = scope char16[allocSize]*; encodedLen = UTF16.Encode(value, encodedData, allocSize); - byteLen = (encodedLen - 1) * 2; + byteLen = encodedLen * 2; Internal.MemCpy(data.GrowUnitialized(byteLen), encodedData, byteLen); data.Add(0); data.Add(0); // Single UTF16 char diff --git a/BeefLibs/corlib/src/String.bf b/BeefLibs/corlib/src/String.bf index b49d9835..199cd1a7 100644 --- a/BeefLibs/corlib/src/String.bf +++ b/BeefLibs/corlib/src/String.bf @@ -2516,11 +2516,11 @@ namespace System c_wchar* buf; if (encodedLen < 128) { - buf = scope:mixin c_wchar[encodedLen]* ( ? ); + buf = scope:mixin c_wchar[encodedLen+1]* ( ? ); } else { - buf = new c_wchar[encodedLen]* ( ? ); + buf = new c_wchar[encodedLen+1]* ( ? ); defer:mixin delete buf; } @@ -2528,6 +2528,7 @@ namespace System UTF16.Encode(this, (.)buf, encodedLen); else UTF32.Encode(this, (.)buf, encodedLen); + buf[encodedLen] = 0; buf } @@ -3805,15 +3806,16 @@ namespace System char16* buf; if (encodedLen < 128) { - buf = scope:mixin char16[encodedLen]* ( ? ); + buf = scope:mixin char16[encodedLen+1]* ( ? ); } else { - buf = new char16[encodedLen]* ( ? ); + buf = new char16[encodedLen+1]* ( ? ); defer:mixin delete buf; } UTF16.Encode(this, buf, encodedLen); + buf[encodedLen] = 0; buf } } diff --git a/BeefLibs/corlib/src/Text/UTF16.bf b/BeefLibs/corlib/src/Text/UTF16.bf index 4ccecb4d..9621b990 100644 --- a/BeefLibs/corlib/src/Text/UTF16.bf +++ b/BeefLibs/corlib/src/Text/UTF16.bf @@ -170,7 +170,6 @@ namespace System.Text else len += 2; } - len++; // null terminator return len; } @@ -223,7 +222,6 @@ namespace System.Text EncodeChar((char16)(valLeft & 0x3FF) + 0xDC00); } } - EncodeChar(0); int encodedLen = bufLen - bufLeft; if (bufLeft < 0) diff --git a/BeefLibs/corlib/src/Text/UTF32.bf b/BeefLibs/corlib/src/Text/UTF32.bf index 8a537bfa..f445db9a 100644 --- a/BeefLibs/corlib/src/Text/UTF32.bf +++ b/BeefLibs/corlib/src/Text/UTF32.bf @@ -106,7 +106,6 @@ namespace System.Text { len++; } - len++; // null terminator return len; } @@ -132,10 +131,8 @@ namespace System.Text for (var c in str.DecodedChars) { - EncodeChar((char32)c); } - EncodeChar(0); int encodedLen = bufLen - bufLeft; if (bufLeft < 0)