Skip to content

Commit

Permalink
Fix buffer leak
Browse files Browse the repository at this point in the history
  • Loading branch information
ahrav committed Oct 18, 2024
1 parent 871a2b0 commit e7d5bbd
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
2 changes: 1 addition & 1 deletion pkg/handlers/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func newMimeTypeReader(r io.Reader) (mimeTypeReader, error) {
func newFileReader(r io.Reader) (fileReader, error) {
var fReader fileReader

fReader.BufferedReadSeeker = iobuf.NewBufferedReaderSeeker(r)
fReader.BufferedReadSeeker = iobuf.NewBufferedReadSeeker(r)

mime, err := mimetype.DetectReader(fReader)
if err != nil {
Expand Down
12 changes: 6 additions & 6 deletions pkg/iobuf/bufferedreaderseeker.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,10 @@ func asSeeker(r io.Reader) io.Seeker {
return seeker
}

// NewBufferedReaderSeeker creates and initializes a BufferedReadSeeker.
// NewBufferedReadSeeker creates and initializes a BufferedReadSeeker.
// It takes an io.Reader and checks if it supports seeking.
// If the reader supports seeking, it is stored in the seeker field.
func NewBufferedReaderSeeker(r io.Reader) *BufferedReadSeeker {
func NewBufferedReadSeeker(r io.Reader) *BufferedReadSeeker {
const defaultThreshold = 1 << 24 // 16MB threshold for switching to file buffering

var (
Expand All @@ -82,10 +82,6 @@ func NewBufferedReaderSeeker(r io.Reader) *BufferedReadSeeker {
)

seeker = asSeeker(r)
if seeker == nil {
buf = defaultBufferPool.Get()
}

return &BufferedReadSeeker{
reader: r,
seeker: seeker,
Expand Down Expand Up @@ -266,6 +262,10 @@ func (br *BufferedReadSeeker) readToEnd() error {
}

func (br *BufferedReadSeeker) writeData(data []byte) error {
if br.buf == nil {
br.buf = br.bufPool.Get()
}

_, err := br.buf.Write(data)
if err != nil {
return err
Expand Down
8 changes: 4 additions & 4 deletions pkg/iobuf/bufferedreaderseeker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ func TestBufferedReaderSeekerRead(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

brs := NewBufferedReaderSeeker(tt.reader)
brs := NewBufferedReadSeeker(tt.reader)

for i, readSize := range tt.reads {
buf := make([]byte, readSize)
Expand Down Expand Up @@ -241,7 +241,7 @@ func TestBufferedReaderSeekerSeek(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

brs := NewBufferedReaderSeeker(tt.reader)
brs := NewBufferedReadSeeker(tt.reader)
pos, err := brs.Seek(tt.offset, tt.whence)
if tt.expectedErr {
assert.Error(t, err)
Expand Down Expand Up @@ -336,7 +336,7 @@ func TestBufferedReaderSeekerReadAt(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

brs := NewBufferedReaderSeeker(tt.reader)
brs := NewBufferedReadSeeker(tt.reader)

out := make([]byte, tt.length)
n, err := brs.ReadAt(out, tt.offset)
Expand Down Expand Up @@ -436,7 +436,7 @@ func TestBufferedReadSeekerSize(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

brs := NewBufferedReaderSeeker(tt.reader)
brs := NewBufferedReadSeeker(tt.reader)

if tt.setup != nil {
tt.setup(brs)
Expand Down

0 comments on commit e7d5bbd

Please sign in to comment.