Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 87888ea

Browse files
committed
storage/filesystem: check all Close errors
1 parent ebc25df commit 87888ea

File tree

5 files changed

+32
-24
lines changed

5 files changed

+32
-24
lines changed

storage/filesystem/config.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package filesystem
22

33
import (
4-
"io/ioutil"
4+
stdioutil "io/ioutil"
55
"os"
66

77
"gopkg.in/src-d/go-git.v4/config"
88
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
9+
"gopkg.in/src-d/go-git.v4/utils/ioutil"
910
)
1011

1112
type ConfigStorage struct {
@@ -24,9 +25,9 @@ func (c *ConfigStorage) Config() (*config.Config, error) {
2425
return nil, err
2526
}
2627

27-
defer f.Close()
28+
defer ioutil.CheckClose(f, &err)
2829

29-
b, err := ioutil.ReadAll(f)
30+
b, err := stdioutil.ReadAll(f)
3031
if err != nil {
3132
return nil, err
3233
}
@@ -35,7 +36,7 @@ func (c *ConfigStorage) Config() (*config.Config, error) {
3536
return nil, err
3637
}
3738

38-
return cfg, nil
39+
return cfg, err
3940
}
4041

4142
func (c *ConfigStorage) SetConfig(cfg *config.Config) error {
@@ -48,7 +49,7 @@ func (c *ConfigStorage) SetConfig(cfg *config.Config) error {
4849
return err
4950
}
5051

51-
defer f.Close()
52+
defer ioutil.CheckClose(f, &err)
5253

5354
b, err := cfg.Marshal()
5455
if err != nil {

storage/filesystem/index.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"gopkg.in/src-d/go-git.v4/plumbing/format/index"
77
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
8+
"gopkg.in/src-d/go-git.v4/utils/ioutil"
89
)
910

1011
type IndexStorage struct {
@@ -17,10 +18,11 @@ func (s *IndexStorage) SetIndex(idx *index.Index) error {
1718
return err
1819
}
1920

20-
defer f.Close()
21+
defer ioutil.CheckClose(f, &err)
2122

2223
e := index.NewEncoder(f)
23-
return e.Encode(idx)
24+
err = e.Encode(idx)
25+
return err
2426
}
2527

2628
func (s *IndexStorage) Index() (*index.Index, error) {
@@ -37,8 +39,9 @@ func (s *IndexStorage) Index() (*index.Index, error) {
3739
return nil, err
3840
}
3941

40-
defer f.Close()
42+
defer ioutil.CheckClose(f, &err)
4143

4244
d := index.NewDecoder(f)
43-
return idx, d.Decode(idx)
45+
err = d.Decode(idx)
46+
return idx, err
4447
}

storage/filesystem/internal/dotgit/dotgit.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -253,10 +253,10 @@ func (d *DotGit) SetRef(r *plumbing.Reference) error {
253253
return err
254254
}
255255

256-
if _, err := f.Write([]byte(content)); err != nil {
257-
return err
258-
}
259-
return f.Close()
256+
defer ioutil.CheckClose(f, &err)
257+
258+
_, err = f.Write([]byte(content))
259+
return err
260260
}
261261

262262
// Refs scans the git directory collecting references, which it returns.

storage/filesystem/object.go

+12-9
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"gopkg.in/src-d/go-git.v4/plumbing/storer"
1212
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
1313
"gopkg.in/src-d/go-git.v4/storage/memory"
14+
"gopkg.in/src-d/go-git.v4/utils/ioutil"
1415

1516
"gopkg.in/src-d/go-billy.v3"
1617
)
@@ -53,10 +54,11 @@ func (s *ObjectStorage) loadIdxFile(h plumbing.Hash) error {
5354
if err != nil {
5455
return err
5556
}
56-
defer idxfile.Close()
5757

58+
defer ioutil.CheckClose(idxfile, &err)
5859
s.index[h] = make(idx)
59-
return s.index[h].Decode(idxfile)
60+
err = s.index[h].Decode(idxfile)
61+
return err
6062
}
6163

6264
func (s *ObjectStorage) NewEncodedObject() plumbing.EncodedObject {
@@ -94,14 +96,14 @@ func (s *ObjectStorage) SetEncodedObject(o plumbing.EncodedObject) (plumbing.Has
9496
return plumbing.ZeroHash, err
9597
}
9698

97-
defer ow.Close()
99+
defer ioutil.CheckClose(ow, &err)
98100

99101
or, err := o.Reader()
100102
if err != nil {
101103
return plumbing.ZeroHash, err
102104
}
103105

104-
defer or.Close()
106+
defer ioutil.CheckClose(or, &err)
105107

106108
if err := ow.WriteHeader(o.Type(), o.Size()); err != nil {
107109
return plumbing.ZeroHash, err
@@ -111,7 +113,7 @@ func (s *ObjectStorage) SetEncodedObject(o plumbing.EncodedObject) (plumbing.Has
111113
return plumbing.ZeroHash, err
112114
}
113115

114-
return o.Hash(), nil
116+
return o.Hash(), err
115117
}
116118

117119
// EncodedObject returns the object with the given hash, by searching for it in
@@ -143,15 +145,15 @@ func (s *ObjectStorage) getFromUnpacked(h plumbing.Hash) (obj plumbing.EncodedOb
143145
return nil, err
144146
}
145147

146-
defer f.Close()
148+
defer ioutil.CheckClose(f, &err)
147149

148150
obj = s.NewEncodedObject()
149151
r, err := objfile.NewReader(f)
150152
if err != nil {
151153
return nil, err
152154
}
153155

154-
defer r.Close()
156+
defer ioutil.CheckClose(r, &err)
155157

156158
t, size, err := r.Header()
157159
if err != nil {
@@ -186,7 +188,7 @@ func (s *ObjectStorage) getFromPackfile(h plumbing.Hash) (plumbing.EncodedObject
186188
return nil, err
187189
}
188190

189-
defer f.Close()
191+
defer ioutil.CheckClose(f, &err)
190192

191193
p := packfile.NewScanner(f)
192194
d, err := packfile.NewDecoder(p, memory.NewStorage())
@@ -195,7 +197,8 @@ func (s *ObjectStorage) getFromPackfile(h plumbing.Hash) (plumbing.EncodedObject
195197
}
196198

197199
d.SetOffsets(s.index[pack])
198-
return d.DecodeObjectAt(offset)
200+
obj, err := d.DecodeObjectAt(offset)
201+
return obj, err
199202
}
200203

201204
func (s *ObjectStorage) findObjectInPackfile(h plumbing.Hash) (plumbing.Hash, int64) {

storage/filesystem/shallow.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"gopkg.in/src-d/go-git.v4/plumbing"
88
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
9+
"gopkg.in/src-d/go-git.v4/utils/ioutil"
910
)
1011

1112
// ShallowStorage where the shallow commits are stored, an internal to
@@ -23,14 +24,14 @@ func (s *ShallowStorage) SetShallow(commits []plumbing.Hash) error {
2324
return err
2425
}
2526

26-
defer f.Close()
27+
defer ioutil.CheckClose(f, &err)
2728
for _, h := range commits {
2829
if _, err := fmt.Fprintf(f, "%s\n", h); err != err {
2930
return err
3031
}
3132
}
3233

33-
return nil
34+
return err
3435
}
3536

3637
// Shallow return the shallow commits reading from shallo file from .git

0 commit comments

Comments
 (0)