fetch ensures the buffer contains at least 'need' bytes
(need int)
| 73 | |
| 74 | // fetch ensures the buffer contains at least 'need' bytes |
| 75 | func (br *Reader) fetch(need int) error { |
| 76 | if br.finished || need <= len(br.buf) { |
| 77 | return nil |
| 78 | } |
| 79 | |
| 80 | b := make([]byte, need-len(br.buf)) |
| 81 | n, err := ioutil.TryReadFull(br.r, b) |
| 82 | |
| 83 | if errors.Is(err, io.EOF) { |
| 84 | // If we reached EOF, we mark the reader as finished |
| 85 | br.finished = true |
| 86 | } else if err != nil { |
| 87 | return err |
| 88 | } |
| 89 | |
| 90 | if n > 0 { |
| 91 | // append only those which we read in fact |
| 92 | br.buf = append(br.buf, b[:n]...) |
| 93 | } |
| 94 | |
| 95 | return nil |
| 96 | } |
no test coverage detected