From 0835dcda2f72826764198982bc79b3a57398c9ca Mon Sep 17 00:00:00 2001 From: Felix Pojtinger Date: Sun, 19 Dec 2021 01:50:57 +0100 Subject: [PATCH] fix: Return written bytes if there is a EOF error while reading/seeking --- internal/fs/file.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/fs/file.go b/internal/fs/file.go index a0a8dcd..2373aad 100644 --- a/internal/fs/file.go +++ b/internal/fs/file.go @@ -226,7 +226,12 @@ func (f *File) Read(p []byte) (n int, err error) { } w := &bytes.Buffer{} - if _, err := io.CopyN(w, f.reader, int64(len(p))); err != nil { + _, err = io.CopyN(w, f.reader, int64(len(p))) + if err == io.EOF { + return copy(p, w.Bytes()), io.EOF + } + + if err != nil { return -1, err } @@ -310,6 +315,10 @@ func (f *File) Seek(offset int64, whence int) (int64, error) { } written, err := io.CopyN(io.Discard, f.reader, dst-int64(f.reader.BytesRead)) + if err == io.EOF { + return written, io.EOF + } + if err != nil { return -1, err }