func (b *Reader) ReadFull(n int) ([]byte, error) {
//return b.buf[]
if b.err != nil || n == 0 {
return nil, b.err
}
var buf = b.slice.Make(n)
if _, err := io.ReadFull(bytes.NewReader(b.buf[b.rpos:]), buf); err != nil {
return nil, err
}
b.rpos += n
return buf, nil
}
godis/util/bufio2/bufio.go
Line 119 in be1ff92
这里每次从缓冲区读取长度为n的buf,但未考虑b.buf读完的情况,详细看了几遍感觉还是有问题。