Skip to content

Commit f17ed8d

Browse files
authored
Merge pull request #13 from bk2204/blob-leak
object_db: prevent FD leaks when writing blobs
2 parents 1d0a28b + 8f154c6 commit f17ed8d

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

object_db.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func (o *ObjectDatabase) WriteBlob(b *Blob) ([]byte, error) {
158158
if err != nil {
159159
return nil, err
160160
}
161-
defer os.Remove(buf.Name())
161+
defer o.cleanup(buf)
162162

163163
sha, _, err := o.encodeBuffer(b, buf)
164164
if err != nil {
@@ -236,7 +236,7 @@ func (d *ObjectDatabase) encodeBuffer(object Object, buf io.ReadWriter) (sha []b
236236
if err != nil {
237237
return nil, 0, err
238238
}
239-
defer os.Remove(tmp.Name())
239+
defer d.cleanup(tmp)
240240

241241
to := NewObjectWriter(tmp)
242242
if _, err = to.WriteHeader(object.Type(), int64(cn)); err != nil {
@@ -323,3 +323,8 @@ func (o *ObjectDatabase) decode(r *ObjectReader, into Object) error {
323323
}
324324
return r.Close()
325325
}
326+
327+
func (o *ObjectDatabase) cleanup(f *os.File) {
328+
f.Close()
329+
os.Remove(f.Name())
330+
}

0 commit comments

Comments
 (0)