mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-02-06 21:29:44 +00:00
[PR #24] [MERGED] Temporary fix for solid archive detection until SharpCompress makes another release. #48
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/SabreTools/SabreTools.Serialization/pull/24
Author: @HeroponRikiBestest
Created: 9/27/2025
Status: ✅ Merged
Merged: 9/27/2025
Merged by: @mnadareski
Base:
main← Head:solid-fix📝 Commits (1)
997037dTemporary fix for solid archive detection until SharpCompress makes another release.📊 Changes
2 files changed (+78 additions, -4 deletions)
View changed files
📝
SabreTools.Serialization/Wrappers/RAR.Extraction.cs(+39 -1)📝
SabreTools.Serialization/Wrappers/SevenZip.Extraction.cs(+39 -3)📄 Description
At present, the release of SharpCompress that Serialization uses is missing the fix for single-block solid archive detection that was pushed a month or so afterwards https://github.com/adamhathcock/sharpcompress/pull/924 . From my own observations, and the experiences of various MPF/BOS users, solid archives (especially solid 7Z archives) tend to only be one block, so this winds up being a pretty major issue, resulting in extraction more or less locking up anytime a 7z is encountered. I understand that this fix isn't the most elegant, but it doesn't actually waste that much time since it only needs to check for two file entries, and it will have a major positive impact on processing times, given the state of solid extraction without it is borderline unusable on large archives with many files.
This backports what I had done for the original commit
ecd99b157din the pull where this was first found https://github.com/SabreTools/BinaryObjectScanner/pull/375 .🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.