Fix kor string writes

Was writing kor string, then writing en after (all terminators).
Make method signature match other SetString, with write buffer as first arg

Closes #3440
This commit is contained in:
Kurt
2022-02-17 23:11:13 -08:00
parent 51975e4bdd
commit f2637168ab
3 changed files with 8 additions and 7 deletions

View File

@@ -63,11 +63,11 @@ protected override byte[] GetNonNickname(int language)
return data;
}
private void SetString(ReadOnlySpan<char> value, Span<byte> destBuffer, int maxLength, StringConverterOption option = StringConverterOption.None)
private int SetString(ReadOnlySpan<char> value, Span<byte> destBuffer, int maxLength, StringConverterOption option = StringConverterOption.None)
{
if (Korean)
StringConverter2KOR.SetString(value, destBuffer, maxLength, option);
StringConverter12.SetString(destBuffer, value, maxLength, Japanese, option);
return StringConverter2KOR.SetString(destBuffer, value, maxLength, option);
return StringConverter12.SetString(destBuffer, value, maxLength, Japanese, option);
}
public sealed override string Nickname

View File

@@ -65,12 +65,13 @@ private static int LoadString(ReadOnlySpan<byte> data, Span<char> result)
/// <summary>
/// Converts a string to Generation 1 encoded data.
/// </summary>
/// <param name="value">Decoded string.</param>
/// <param name="destBuffer">Span of bytes to write encoded string data</param>
/// <param name="value">Decoded string.</param>
/// <param name="maxLength">Maximum length of the input <see cref="value"/></param>
/// <param name="option">Buffer pre-formatting option</param>
/// <returns>Encoded data.</returns>
public static int SetString(ReadOnlySpan<char> value, Span<byte> destBuffer, int maxLength, StringConverterOption option = StringConverterOption.Clear50)
public static int SetString(Span<byte> destBuffer, ReadOnlySpan<char> value, int maxLength,
StringConverterOption option = StringConverterOption.Clear50)
{
if (option is StringConverterOption.ClearZero)
destBuffer.Clear();
@@ -116,7 +117,7 @@ public static int SetString(ReadOnlySpan<char> value, Span<byte> destBuffer, int
}
}
if (destBuffer.Length != value.Length)
if (ctr < value.Length)
destBuffer[ctr++] = G1TerminatorCode;
return ctr;
}

View File

@@ -738,7 +738,7 @@ public override string GetString(ReadOnlySpan<byte> data)
public override int SetString(Span<byte> destBuffer, ReadOnlySpan<char> value, int maxLength, StringConverterOption option)
{
if (Korean)
return StringConverter2KOR.SetString(value, destBuffer, maxLength, option);
return StringConverter2KOR.SetString(destBuffer, value, maxLength, option);
return StringConverter12.SetString(destBuffer, value, maxLength, Japanese, option);
}