@@ -4,11 +4,12 @@ import (
4
4
"bytes"
5
5
"errors"
6
6
"io"
7
- "io/ioutil"
7
+ stdioutil "io/ioutil"
8
8
9
9
"github.com/go-git/go-git/v5/plumbing"
10
10
"github.com/go-git/go-git/v5/plumbing/cache"
11
11
"github.com/go-git/go-git/v5/plumbing/storer"
12
+ "github.com/go-git/go-git/v5/utils/ioutil"
12
13
)
13
14
14
15
var (
@@ -283,7 +284,7 @@ func (p *Parser) resolveDeltas() error {
283
284
284
285
if ! obj .IsDelta () && len (obj .Children ) > 0 {
285
286
for _ , child := range obj .Children {
286
- if err := p .resolveObject (ioutil .Discard , child , content ); err != nil {
287
+ if err := p .resolveObject (stdioutil .Discard , child , content ); err != nil {
287
288
return err
288
289
}
289
290
}
@@ -298,7 +299,7 @@ func (p *Parser) resolveDeltas() error {
298
299
return nil
299
300
}
300
301
301
- func (p * Parser ) get (o * objectInfo , buf * bytes.Buffer ) error {
302
+ func (p * Parser ) get (o * objectInfo , buf * bytes.Buffer ) ( err error ) {
302
303
if ! o .ExternalRef { // skip cache check for placeholder parents
303
304
b , ok := p .cache .Get (o .Offset )
304
305
if ok {
@@ -310,17 +311,21 @@ func (p *Parser) get(o *objectInfo, buf *bytes.Buffer) error {
310
311
// If it's not on the cache and is not a delta we can try to find it in the
311
312
// storage, if there's one. External refs must enter here.
312
313
if p .storage != nil && ! o .Type .IsDelta () {
313
- e , err := p .storage .EncodedObject (plumbing .AnyObject , o .SHA1 )
314
+ var e plumbing.EncodedObject
315
+ e , err = p .storage .EncodedObject (plumbing .AnyObject , o .SHA1 )
314
316
if err != nil {
315
317
return err
316
318
}
317
319
o .Type = e .Type ()
318
320
319
- r , err := e .Reader ()
321
+ var r io.ReadCloser
322
+ r , err = e .Reader ()
320
323
if err != nil {
321
324
return err
322
325
}
323
326
327
+ defer ioutil .CheckClose (r , & err )
328
+
324
329
_ , err = buf .ReadFrom (io .LimitReader (r , e .Size ()))
325
330
return err
326
331
}
0 commit comments