git/odb: don't close Blob types after decoding
This commit is contained in:
parent
e571e7f2bf
commit
1d5ef4c427
@ -237,6 +237,12 @@ func (o *ObjectDatabase) open(sha []byte) (*ObjectReader, error) {
|
|||||||
|
|
||||||
// decode decodes an object given by the sha "sha []byte" into the given object
|
// decode decodes an object given by the sha "sha []byte" into the given object
|
||||||
// "into", or returns an error if one was encountered.
|
// "into", or returns an error if one was encountered.
|
||||||
|
//
|
||||||
|
// Ordinarily, it closes the object's underlying io.ReadCloser (if it implements
|
||||||
|
// the `io.Closer` interface), but skips this if the "into" Object is of type
|
||||||
|
// BlobObjectType. Blob's don't exhaust the buffer completely (they instead
|
||||||
|
// maintain a handle on the blob's contents via an io.LimitedReader) and
|
||||||
|
// therefore cannot be closed until signaled explicitly by git/odb.Blob.Close().
|
||||||
func (o *ObjectDatabase) decode(sha []byte, into Object) error {
|
func (o *ObjectDatabase) decode(sha []byte, into Object) error {
|
||||||
r, err := o.open(sha)
|
r, err := o.open(sha)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -254,8 +260,10 @@ func (o *ObjectDatabase) decode(sha []byte, into Object) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = r.Close(); err != nil {
|
if into.Type() != BlobObjectType {
|
||||||
return err
|
if err = r.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user