in bindings/go/reader.go [175:197]
func (r *Reader) Read(buf []byte) (int, error) {
length := uint(len(buf))
if length == 0 {
return 0, nil
}
read := getFFI[readerRead](r.ctx, symReaderRead)
var (
totalSize uint
size uint
err error
)
for {
size, err = read(r.inner, buf[totalSize:])
totalSize += size
if size == 0 || err != nil || totalSize >= length {
break
}
}
if totalSize == 0 && err == nil {
err = io.EOF
}
return int(totalSize), err
}