Fix SlicedStream.Seek(offset, SeekOrigin.End) #18313
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes #13604
The offset
_from
is applied inset_Position
, so applying it also inSeek
mispositions the stream.ZipArchive
exposes the problem by seeking to the end to read the table of contents.What does the pull request do?
Fixes a double-offset in
SlicedStream
which should only be a single offset. Resolves #13604What is the current behavior?
SlicedStream.Seek(offset, SeekOrigin.End)
will almost always seek to an incorrect position.What is the updated/expected behavior with this PR?
After calling
stream.Seek(offset, SeekOrigin.End)
it will be the case thatstream.Position == stream.Length + offset)
.How was the solution implemented (if it's not obvious)?
Remove an offset in
Seek
which is also applied whenSeek
callsset_Position
. Note that this was only incorrect forSeekOrigin.End
: forSeekOrigin.Begin
andSeekOrigin.Current
the offset was (correctly) not applied.Checklist
Fixed issues
Fixes #13604