From cf6b5053c42d12d24e5cd2b8c681f8d50ab74ea4 Mon Sep 17 00:00:00 2001 From: Illustar0 Date: Thu, 22 Oct 2026 00:04:19 +0800 Subject: [PATCH] fix: refill buffer before slicing in BinaryReadStream.ReadMemory - Call LoadPosition(amount) when readSafe is false and amount fits within the internal buffer - Avoid falling back to byte array allocation when the current buffer has fewer remaining bytes than requested --- Noggog.CSharpExt/Streams/Binary/BinaryReadStream.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Noggog.CSharpExt/Streams/Binary/BinaryReadStream.cs b/Noggog.CSharpExt/Streams/Binary/BinaryReadStream.cs index beaea63..df3a6a2 100644 --- a/Noggog.CSharpExt/Streams/Binary/BinaryReadStream.cs +++ b/Noggog.CSharpExt/Streams/Binary/BinaryReadStream.cs @@ -229,8 +229,9 @@ public ReadOnlySpan GetSpan(int amount, int offset, bool readSafe = true) public ReadOnlyMemorySlice ReadMemory(int amount, bool readSafe = true) { - if (!readSafe && amount < InternalStreamRemaining) + if (!readSafe && amount <= _data.Length) { + LoadPosition(amount); return _internalMemoryStream.ReadMemory(amount, readSafe: false); } var ret = new byte[amount];