From 3fb8387419fa1ca1907179e5ddfee39a3d03e7ec Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 5 Feb 2026 09:34:54 +0000 Subject: [PATCH] leave stream open --- src/SharpCompress/IO/SeekableSharpCompressStream.cs | 4 +++- src/SharpCompress/IO/SharpCompressStream.Create.cs | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/SharpCompress/IO/SeekableSharpCompressStream.cs b/src/SharpCompress/IO/SeekableSharpCompressStream.cs index 2f94b641..28b67c4e 100644 --- a/src/SharpCompress/IO/SeekableSharpCompressStream.cs +++ b/src/SharpCompress/IO/SeekableSharpCompressStream.cs @@ -22,7 +22,7 @@ internal sealed partial class SeekableSharpCompressStream : SharpCompressStream /// public override bool ThrowOnDispose { get; set; } - public SeekableSharpCompressStream(Stream stream) + public SeekableSharpCompressStream(Stream stream, bool leaveStreamOpen = false) : base(Null, true, false, null) { if (stream is null) @@ -33,6 +33,8 @@ internal sealed partial class SeekableSharpCompressStream : SharpCompressStream { throw new ArgumentException("Stream must be seekable", nameof(stream)); } + + LeaveStreamOpen = leaveStreamOpen; _stream = stream; } diff --git a/src/SharpCompress/IO/SharpCompressStream.Create.cs b/src/SharpCompress/IO/SharpCompressStream.Create.cs index 40db0bee..ae71003b 100644 --- a/src/SharpCompress/IO/SharpCompressStream.Create.cs +++ b/src/SharpCompress/IO/SharpCompressStream.Create.cs @@ -28,10 +28,18 @@ internal partial class SharpCompressStream if (underlying.CanSeek) { // Create SeekableSharpCompressStream that preserves LeaveStreamOpen - return new SeekableSharpCompressStream(underlying); + return new SeekableSharpCompressStream( + underlying, + sharpCompressStream.LeaveStreamOpen + ); } // Non-seekable underlying stream - wrap with rolling buffer - return new SharpCompressStream(underlying, true, false, rewindableBufferSize); + return new SharpCompressStream( + underlying, + sharpCompressStream.LeaveStreamOpen, + false, + rewindableBufferSize + ); } // Not passthrough - return as-is return sharpCompressStream;