From 6724a318bad999f842535694adc5628771e971ec Mon Sep 17 00:00:00 2001 From: Andreas Nahr Date: Fri, 12 Jul 2024 21:10:50 +0200 Subject: [PATCH 1/2] Remove implicit flush from BufferedStream.WriteByte Fix #104559 --- .../System.Private.CoreLib/src/System/IO/BufferedStream.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs b/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs index 40abcbdac5580a..b695c34b276a92 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs @@ -1166,9 +1166,11 @@ private void WriteByteSlow(byte value) EnsureBufferAllocated(); } - // We should not be flushing here, but only writing to the underlying stream, but previous version flushed, so we keep this. if (_writePos >= _bufferSize - 1) - FlushWrite(); + { + _stream.Write(_buffer, 0, _writePos); + _writePos = 0; + } _buffer![_writePos++] = value; From 0a49dd10b2d3b0f4de9e499ea15633043b1f20ce Mon Sep 17 00:00:00 2001 From: Andreas Nahr Date: Fri, 12 Jul 2024 21:39:10 +0200 Subject: [PATCH 2/2] Add null asserts --- .../System.Private.CoreLib/src/System/IO/BufferedStream.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs b/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs index b695c34b276a92..09aa09d3446056 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/BufferedStream.cs @@ -1168,7 +1168,8 @@ private void WriteByteSlow(byte value) if (_writePos >= _bufferSize - 1) { - _stream.Write(_buffer, 0, _writePos); + Debug.Assert(_stream != null); + _stream.Write(_buffer!, 0, _writePos); _writePos = 0; }