Skip to content

Commit e3a860b

Browse files
authored
Merge pull request #4 from bill-rich/simplify_reader
Remove for loop
2 parents eae5eef + dccae5f commit e3a860b

File tree

1 file changed

+4
-27
lines changed

1 file changed

+4
-27
lines changed

disk_buffer_reader.go

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package diskbufferreader
55

66
import (
7-
"bytes"
87
"errors"
98
"fmt"
109
"io"
@@ -80,34 +79,12 @@ func (dbr *DiskBufferReader) Read(out []byte) (int, error) {
8079
if dbr.index <= dbr.bytesRead {
8180
dbr.tmpFile.Seek(dbr.index, io.SeekStart)
8281
}
83-
mr := io.MultiReader(dbr.tmpFile, dbr.reader)
84-
bytesRead := 0
85-
outBuffer := bytes.NewBuffer([]byte{})
86-
var outErr error
87-
for {
88-
outMulti := make([]byte, len(out)-bytesRead)
89-
n, err := mr.Read(outMulti)
90-
if err != nil {
91-
if !errors.Is(err, io.EOF) {
92-
return 0, err
93-
}
94-
outErr = err
95-
}
96-
97-
outBuffer.Write(outMulti[:n])
98-
bytesRead += n
9982

100-
if errors.Is(outErr, io.EOF) || bytesRead >= outLen {
101-
if bytesRead > 0 && bytesRead < outLen && errors.Is(err, io.EOF) {
102-
outErr = nil
103-
}
83+
mr := io.MultiReader(dbr.tmpFile, dbr.reader)
10484

105-
break
106-
}
107-
}
108-
copy(out, outBuffer.Bytes())
109-
dbr.index += int64(bytesRead)
110-
return bytesRead, outErr
85+
n, err := mr.Read(out)
86+
dbr.index += int64(n)
87+
return n, err
11188
}
11289

11390
// Reset the reader position to the start.

0 commit comments

Comments
 (0)