From 7e9f648a05ebc99b0d091ef19aefb1f7dec49a4b Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Wed, 7 Jul 2021 18:03:54 +0200 Subject: [PATCH] Fix NetworkMessage UTF-16 string write and read --- Source/Engine/Networking/NetworkMessage.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Source/Engine/Networking/NetworkMessage.cs b/Source/Engine/Networking/NetworkMessage.cs index 92146a4bc..6858ec722 100644 --- a/Source/Engine/Networking/NetworkMessage.cs +++ b/Source/Engine/Networking/NetworkMessage.cs @@ -253,8 +253,11 @@ namespace FlaxEngine.Networking // Note: Make sure that this is consistent with the C++ message API! var data = Encoding.Unicode.GetBytes(value); - WriteUInt16((ushort)data.Length); // TODO: Use 1-byte length when possible - WriteBytes(data, data.Length * sizeof(ushort)); + var dataLength = data.Length; + var stringLength = value.Length; + + WriteUInt16((ushort)stringLength); // TODO: Use 1-byte length when possible + WriteBytes(data, dataLength); } /// @@ -265,10 +268,11 @@ namespace FlaxEngine.Networking // Note: Make sure that this is consistent with the C++ message API! var stringLength = ReadUInt16(); // In chars - var stringSize = stringLength * sizeof(ushort); // In bytes - var bytes = stackalloc char[stringSize]; - ReadBytes((byte*)bytes, stringSize); - return new string(bytes); + var dataLength = stringLength * sizeof(char); // In bytes + var bytes = stackalloc char[stringLength]; + + ReadBytes((byte*)bytes, dataLength); + return new string(bytes, 0, stringLength); } ///