mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-24 16:05:27 +00:00
Rewind buffer fix for directory extract.
This commit is contained in:
@@ -330,7 +330,7 @@ public class ZipArchive : AbstractWritableArchive<ZipArchiveEntry, ZipVolume>
|
||||
protected override IReader CreateReaderForSolidExtraction()
|
||||
{
|
||||
var stream = Volumes.Single().Stream;
|
||||
stream.Position = 0;
|
||||
((IStreamStack)stream).StackSeek(0);
|
||||
return ZipReader.Open(stream, ReaderOptions, Entries);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,6 @@ internal sealed class StreamingZipFilePart : ZipFilePart
|
||||
if (_decompressionStream is DeflateStream deflateStream)
|
||||
{
|
||||
((IStreamStack)rewindableStream).StackSeek(0);
|
||||
//rewindableStream.Rewind(deflateStream.InputBuffer);
|
||||
}
|
||||
|
||||
Skipped = true;
|
||||
|
||||
@@ -22,7 +22,18 @@ internal class StreamingZipHeaderFactory : ZipHeaderFactory
|
||||
{
|
||||
if (stream is not SharpCompressStream) //ensure the stream is already a SharpCompressStream. So the buffer/size will already be set
|
||||
{
|
||||
throw new ArgumentException("Stream must be a SharpCompressStream", nameof(stream));
|
||||
if (stream is SourceStream src) //the original code wrapped this with RewindableStream. Wrap with SharpCOmpressStream as we can get the boffer size
|
||||
{
|
||||
stream = new SharpCompressStream(
|
||||
stream,
|
||||
src.ReaderOptions.LeaveStreamOpen,
|
||||
bufferSize: src.ReaderOptions.BufferSize
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException("Stream must be a SharpCompressStream", nameof(stream));
|
||||
}
|
||||
}
|
||||
SharpCompressStream rewindableStream = (SharpCompressStream)stream;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user