diff --git a/Dalamud/Game/Chat/SeStringHandling/Payload.cs b/Dalamud/Game/Chat/SeStringHandling/Payload.cs index 07baef08e..e809244ec 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payload.cs @@ -93,7 +93,10 @@ namespace Dalamud.Game.Chat.SeStringHandling var payloadStartPos = reader.BaseStream.Position; Payload payload = null; - if ((byte)reader.PeekChar() != START_BYTE) + + var initialByte = reader.ReadByte(); + reader.BaseStream.Position--; + if (initialByte != START_BYTE) { payload = DecodeText(reader); } diff --git a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs index ae7bcb23b..be2f5c13e 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs @@ -62,11 +62,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 - textBytes.Add(reader.ReadByte()); + textBytes.Add(nextByte); } if (textBytes.Count > 0)