From 37b03c7d5afd2bc0b7a006a00720b0e12d469619 Mon Sep 17 00:00:00 2001 From: louis-michel Date: Fri, 29 Jul 2022 14:06:53 -0400 Subject: [PATCH 1/2] Accessibility of Decoder --- src/SharpCompress/Compressors/LZMA/ICoder.cs | 4 ++-- src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SharpCompress/Compressors/LZMA/ICoder.cs b/src/SharpCompress/Compressors/LZMA/ICoder.cs index f5049dd74..3ae84f487 100644 --- a/src/SharpCompress/Compressors/LZMA/ICoder.cs +++ b/src/SharpCompress/Compressors/LZMA/ICoder.cs @@ -25,7 +25,7 @@ public InvalidParamException() } } - internal interface ICodeProgress + public interface ICodeProgress { /// /// Callback progress. @@ -169,4 +169,4 @@ internal interface ISetDecoderProperties { void SetDecoderProperties(byte[] properties); } -} \ No newline at end of file +} diff --git a/src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs b/src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs index ee595e680..f54c2bf7c 100644 --- a/src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs +++ b/src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs @@ -7,7 +7,7 @@ namespace SharpCompress.Compressors.LZMA { - internal class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Stream + public class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Stream { private class LenDecoder { From 0ae75634b1597c800cffcc51625ed536f3d8980b Mon Sep 17 00:00:00 2001 From: Lars Vahlenberg Date: Sat, 30 Jul 2022 16:28:43 +0200 Subject: [PATCH 2/2] SourceStream Position counting bug fix --- src/SharpCompress/IO/SourceStream.cs | 12 ++++++++++-- src/SharpCompress/Utility.cs | 2 -- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/SharpCompress/IO/SourceStream.cs b/src/SharpCompress/IO/SourceStream.cs index 71918c81b..e23f7eb71 100644 --- a/src/SharpCompress/IO/SourceStream.cs +++ b/src/SharpCompress/IO/SourceStream.cs @@ -143,9 +143,17 @@ public override int Read(byte[] buffer, int offset, int count) if (!IsVolumes && count != 0 && Current.Position == Current.Length) { - _prevSize += Current.Length; - if (!SetStream(_stream + 1)) //will load next file if present + var length = Current.Length; + + // Load next file if present + if (!SetStream(_stream + 1)) + { break; + } + + // Current stream switched + // Add length of previous stream + _prevSize += length; Current.Seek(0, SeekOrigin.Begin); } } diff --git a/src/SharpCompress/Utility.cs b/src/SharpCompress/Utility.cs index 28979d9d6..cbdb1ecbf 100644 --- a/src/SharpCompress/Utility.cs +++ b/src/SharpCompress/Utility.cs @@ -170,10 +170,8 @@ public static bool Find(this Stream source, byte[] array) byte[] buffer = GetTransferByteArray(); try { - var pos = source.Position; int count = 0; var len = source.Read(buffer, 0, buffer.Length); - source.Position = pos + len; do {