From 361e6953804ea781c04a6300fa1cc30f59fa7168 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Mon, 2 Feb 2026 14:38:16 +0000 Subject: [PATCH] non-async ace works --- .../Common/Ace/Headers/AceHeader.cs | 4 ++-- src/SharpCompress/Readers/Ace/AceReader.cs | 17 +++++++---------- tests/SharpCompress.Test/TestBase.cs | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/SharpCompress/Common/Ace/Headers/AceHeader.cs b/src/SharpCompress/Common/Ace/Headers/AceHeader.cs index b5f1f18c..eb4bf5b7 100644 --- a/src/SharpCompress/Common/Ace/Headers/AceHeader.cs +++ b/src/SharpCompress/Common/Ace/Headers/AceHeader.cs @@ -66,7 +66,7 @@ namespace SharpCompress.Common.Ace.Headers { // Read header CRC (2 bytes) and header size (2 bytes) var headerBytes = new byte[4]; - if (stream.Read(headerBytes, 0, 4) != 4) + if (!stream.ReadFully(headerBytes)) { return Array.Empty(); } @@ -80,7 +80,7 @@ namespace SharpCompress.Common.Ace.Headers // Read the header data var body = new byte[HeaderSize]; - if (stream.Read(body, 0, HeaderSize) != HeaderSize) + if (!stream.ReadFully(body)) { return Array.Empty(); } diff --git a/src/SharpCompress/Readers/Ace/AceReader.cs b/src/SharpCompress/Readers/Ace/AceReader.cs index fb67c0be..bf4e56a9 100644 --- a/src/SharpCompress/Readers/Ace/AceReader.cs +++ b/src/SharpCompress/Readers/Ace/AceReader.cs @@ -28,9 +28,6 @@ public abstract partial class AceReader : AbstractReader _archiveEncoding = Options.ArchiveEncoding; } - private AceReader(Stream stream, ReaderOptions options) - : this(options) { } - /// /// Derived class must create or manage the Volume itself. /// AbstractReader.Volume is get-only, so it cannot be set here. @@ -43,6 +40,12 @@ public abstract partial class AceReader : AbstractReader protected override IEnumerable GetEntries(Stream stream) { + if (_volume == null) + { + _volume = new AceVolume(stream, Options, 0); + ValidateArchive(_volume); + } + var mainHeaderReader = new AceMainHeader(_archiveEncoding); var mainHeader = mainHeaderReader.Read(stream); if (mainHeader == null) @@ -50,17 +53,11 @@ public abstract partial class AceReader : AbstractReader yield break; } - if (mainHeader?.IsMultiVolume == true) + if (mainHeader.IsMultiVolume) { throw new MultiVolumeExtractionException("Multi volumes are currently not supported"); } - if (_volume == null) - { - _volume = new AceVolume(stream, Options, 0); - ValidateArchive(_volume); - } - var localHeaderReader = new AceFileHeader(_archiveEncoding); while (true) { diff --git a/tests/SharpCompress.Test/TestBase.cs b/tests/SharpCompress.Test/TestBase.cs index 213b776e..ea48cf4d 100644 --- a/tests/SharpCompress.Test/TestBase.cs +++ b/tests/SharpCompress.Test/TestBase.cs @@ -191,7 +191,7 @@ public class TestBase : IAsyncDisposable .EnumerateFiles(ORIGINAL_FILES_PATH, "*.*", SearchOption.AllDirectories) .ToLookup(path => Path.GetExtension(path)); - Assert.Equal(extracted.Count, original.Count); + Assert.Equal( original.Count, extracted.Count); foreach (var orig in original) {