ArchiveFactory.IsArchive does not rewind the input stream's position #658

Closed
opened 2026-01-29 22:15:25 +00:00 by claunia · 0 comments
Owner

Originally created by @Morilli on GitHub (Sep 2, 2024).

Calling ArchiveFactory.IsArchive with a stream as input parameter will potentially seek the given stream. That is necessary of course, but after returning, the stream should be seeked back to its original position.

After all, you might want to check whether a given input is a valid archive that can be handled by SharpCompress before continuing to construct an archive from that stream (or do other things with that stream).

It looks like ArchiveFactory.FindFactory already has that logic but is only exposed via ArchiveFactory.Open, which in itself seeks the input stream by opening the archive immediately (maybe that should also be changed? not sure).

Originally created by @Morilli on GitHub (Sep 2, 2024). Calling `ArchiveFactory.IsArchive` with a stream as input parameter will potentially seek the given stream. That is necessary of course, but after returning, the stream should be seeked back to its original position. After all, you might want to check whether a given input is a valid archive that can be handled by SharpCompress before continuing to construct an archive from that stream (or do other things with that stream). It looks like `ArchiveFactory.FindFactory` already has that logic but is only exposed via `ArchiveFactory.Open`, which in itself seeks the input stream by opening the archive immediately (maybe that should also be changed? not sure).
claunia added the bugup for grabs labels 2026-01-29 22:15:25 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/sharpcompress#658