fix: Return written bytes if there is a EOF error while reading/seeking

This commit is contained in:
Felix Pojtinger
2021-12-19 01:50:57 +01:00
parent f13b984cb1
commit 0835dcda2f

View File

@@ -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
}