Browse code

fd leak and error handling

Signed-off-by: Deng Guangxing <dengguangxing@huawei.com>

Deng Guangxing authored on 2017/06/20 12:56:25
Showing 2 changed files
... ...
@@ -46,7 +46,9 @@ func (r *multiReadSeeker) Seek(offset int64, whence int) (int64, error) {
46 46
 			rdrOffset := offset - tmpOffset
47 47
 			idx := i
48 48
 
49
-			rdr.Seek(rdrOffset, os.SEEK_SET)
49
+			if _, err := rdr.Seek(rdrOffset, os.SEEK_SET); err != nil {
50
+				return -1, err
51
+			}
50 52
 			// make sure all following readers are at 0
51 53
 			for _, rdr := range r.readers[i+1:] {
52 54
 				rdr.Seek(0, os.SEEK_SET)
... ...
@@ -67,7 +69,9 @@ func (r *multiReadSeeker) Seek(offset int64, whence int) (int64, error) {
67 67
 			}
68 68
 			tmpOffset += s
69 69
 		}
70
-		r.Seek(tmpOffset+offset, os.SEEK_SET)
70
+		if _, err := r.Seek(tmpOffset+offset, os.SEEK_SET); err != nil {
71
+			return -1, err
72
+		}
71 73
 		return tmpOffset + offset, nil
72 74
 	case os.SEEK_CUR:
73 75
 		if r.pos == nil {
... ...
@@ -226,6 +226,7 @@ func (fms *fileMetadataStore) TarSplitReader(layer ChainID) (io.ReadCloser, erro
226 226
 	}
227 227
 	f, err := gzip.NewReader(fz)
228 228
 	if err != nil {
229
+		fz.Close()
229 230
 		return nil, err
230 231
 	}
231 232