diff --git a/Dalamud/Game/Chat/SeStringHandling/Payload.cs b/Dalamud/Game/Chat/SeStringHandling/Payload.cs index 716ad0eed..7b31a4565 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payload.cs @@ -30,7 +30,10 @@ namespace Dalamud.Game.Chat.SeStringHandling public static Payload Process(BinaryReader reader) { Payload payload = null; - if ((byte)reader.PeekChar() != START_BYTE) + + var initialByte = reader.ReadByte(); + reader.BaseStream.Position--; + if (initialByte != START_BYTE) { payload = ProcessText(reader); } diff --git a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs index 161cd82db..bd6703835 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs @@ -58,11 +58,15 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads while (reader.BaseStream.Position < endOfStream) { - if ((byte)reader.PeekChar() == START_BYTE) + var nextByte = reader.ReadByte(); + if (nextByte == START_BYTE) + { + // rewind since this byte isn't part of this payload + reader.BaseStream.Position--; break; + } - // not the most efficient, but the easiest - text.Add(reader.ReadByte()); + text.Add(nextByte); } if (text.Count > 0)