Skip to content

Commit 166d53b

Browse files
authored
Merge pull request squid-box#144 from bneidhold/dev
Fix for Seek implementation with SeekOrigin.End
2 parents 3b5351a + 5a9b03f commit 166d53b

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

SevenZip/StreamWrappers.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,20 @@ private int StreamNumberByOffset(long offset)
304304

305305
public void Seek(long offset, SeekOrigin seekOrigin, IntPtr newPosition)
306306
{
307-
long absolutePosition = (seekOrigin == SeekOrigin.Current)
308-
? Position + offset
309-
: offset;
307+
long absolutePosition;
308+
switch (seekOrigin) {
309+
case SeekOrigin.Begin:
310+
absolutePosition = offset;
311+
break;
312+
case SeekOrigin.Current:
313+
absolutePosition = Position + offset;
314+
break;
315+
case SeekOrigin.End:
316+
absolutePosition = Length + offset;
317+
break;
318+
default:
319+
throw new ArgumentOutOfRangeException(nameof(seekOrigin));
320+
}
310321
CurrentStream = StreamNumberByOffset(absolutePosition);
311322
long delta = Streams[CurrentStream].Seek(
312323
absolutePosition - StreamOffsets[CurrentStream].Key, SeekOrigin.Begin);

0 commit comments

Comments
 (0)