From 7e9082f90e1d2e5e93d2418ec47213f8ab5a2fe8 Mon Sep 17 00:00:00 2001 From: Ovear Date: Fri, 7 Aug 2026 22:53:49 +0800 Subject: [PATCH] fix(stream): allow seeking beyond file size per Go convention (#2667) Remove `offset > size` guard from RangeReadReadAtSeeker.Seek and DynamicReadAtSeeker.Seek. Go's io.Seeker convention allows seeking past EOF. Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com> --- internal/stream/stream.go | 2 +- pkg/buffer/utils.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/stream/stream.go b/internal/stream/stream.go index 9ae8313f0..b1e6fd5fa 100644 --- a/internal/stream/stream.go +++ b/internal/stream/stream.go @@ -519,7 +519,7 @@ func (r *RangeReadReadAtSeeker) Seek(offset int64, whence int) (int64, error) { default: return 0, errors.New("Seek: invalid whence") } - if offset < 0 || offset > r.ss.GetSize() { + if offset < 0 { return 0, errors.New("Seek: invalid offset") } r.masterOff = offset diff --git a/pkg/buffer/utils.go b/pkg/buffer/utils.go index 4783f4b70..cf494ce13 100644 --- a/pkg/buffer/utils.go +++ b/pkg/buffer/utils.go @@ -79,7 +79,7 @@ func (r *DynamicReadAtSeeker) Seek(offset int64, whence int) (int64, error) { return 0, errors.New("Seek: invalid whence") } - if offset < 0 || offset > r.block.Size() { + if offset < 0 { return 0, errors.New("Seek: invalid offset") } r.offset = offset