diff options
Diffstat (limited to 'formats')
-rw-r--r-- | formats/packfile/common.go | 7 | ||||
-rw-r--r-- | formats/packfile/reader.go | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/formats/packfile/common.go b/formats/packfile/common.go index 06c63d4..57bc0b9 100644 --- a/formats/packfile/common.go +++ b/formats/packfile/common.go @@ -1,6 +1,7 @@ package packfile import ( + "bufio" "fmt" "io" ) @@ -10,6 +11,12 @@ type trackingReader struct { position int64 } +func NewTrackingReader(r io.Reader) *trackingReader { + return &trackingReader{ + r: bufio.NewReader(r), + } +} + func (t *trackingReader) Read(p []byte) (n int, err error) { n, err = t.r.Read(p) if err != nil { diff --git a/formats/packfile/reader.go b/formats/packfile/reader.go index 3ff342f..959e411 100644 --- a/formats/packfile/reader.go +++ b/formats/packfile/reader.go @@ -59,7 +59,7 @@ func NewReader(r io.Reader) *Reader { return &Reader{ MaxObjectsLimit: DefaultMaxObjectsLimit, - r: &trackingReader{r: r}, + r: NewTrackingReader(r), offsets: make(map[int64]core.Hash, 0), } } @@ -98,7 +98,7 @@ func (r *Reader) Read(s core.ObjectStorage) (int64, error) { func (r *Reader) validateHeader() error { var header = make([]byte, 4) - if _, err := r.r.Read(header); err != nil { + if _, err := io.ReadFull(r.r, header); err != nil { return err } @@ -127,7 +127,6 @@ func (r *Reader) readObjects(count uint32) error { start := r.r.position obj, err := r.newRAWObject() if err != nil && err != io.EOF { - fmt.Println(err) return err } @@ -188,7 +187,7 @@ func (r *Reader) newRAWObject() (core.Object, error) { func (r *Reader) readREFDelta(raw core.Object) error { var ref core.Hash - if _, err := r.r.Read(ref[:]); err != nil { + if _, err := io.ReadFull(r.r, ref[:]); err != nil { return err } |