diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/WindowsFileStreamStrategy.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/WindowsFileStreamStrategy.cs index 52d8eda880e508..9aa9d9c0bbf3e9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/WindowsFileStreamStrategy.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/WindowsFileStreamStrategy.cs @@ -108,9 +108,15 @@ public override long Position internal sealed override bool IsPipe => _isPipe; // Flushing is the responsibility of BufferedFileStreamStrategy - // TODO: we might consider calling FileStreamHelpers.Seek(handle, _path, _filePosition, SeekOrigin.Begin); - // here to set the actual file offset - internal sealed override SafeFileHandle SafeFileHandle => _fileHandle; + internal sealed override SafeFileHandle SafeFileHandle + { + get + { + // Update the file offset in the handle before exposing it. + FileStreamHelpers.Seek(_fileHandle, _path, _filePosition, SeekOrigin.Begin); + return _fileHandle; + } + } // ReadByte and WriteByte methods are used only when the user has disabled buffering on purpose // their performance is going to be horrible