diff options
| -rw-r--r-- | packed_write_pack.go | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/packed_write_pack.go b/packed_write_pack.go index 7e79b2ef..329e2a7f 100644 --- a/packed_write_pack.go +++ b/packed_write_pack.go @@ -39,6 +39,16 @@ func newPackWriter(w io.Writer, algo hashAlgorithm, objCount uint32) (*packWrite }, nil } +func (pw *packWriter) Write(p []byte) (int, error) { + if pw == nil || !pw.wroteHeader { + return 0, ErrInvalidObject + } + if err := pw.writePacked(p); err != nil { + return 0, err + } + return len(p), nil +} + func (pw *packWriter) writePacked(p []byte) error { if len(p) == 0 { return nil @@ -94,7 +104,7 @@ func (pw *packWriter) WriteObject(ty ObjectType, body []byte) error { return err } - zw := zlib.NewWriter(&packHashWriter{pw: pw}) + zw := zlib.NewWriter(pw) if _, err := zw.Write(body); err != nil { _ = zw.Close() return err @@ -137,7 +147,7 @@ func (pw *packWriter) WriteOfsDelta(baseOffset uint64, baseSize, resultSize int, return err } - zw := zlib.NewWriter(&packHashWriter{pw: pw}) + zw := zlib.NewWriter(pw) if _, err := zw.Write(delta); err != nil { _ = zw.Close() return err @@ -175,7 +185,7 @@ func (pw *packWriter) WriteRefDelta(base Hash, baseSize, resultSize int, delta [ return err } - zw := zlib.NewWriter(&packHashWriter{pw: pw}) + zw := zlib.NewWriter(pw) if _, err := zw.Write(delta); err != nil { _ = zw.Close() return err @@ -197,20 +207,6 @@ func (pw *packWriter) Close() (Hash, error) { return out, nil } -type packHashWriter struct { - pw *packWriter -} - -func (w *packHashWriter) Write(p []byte) (int, error) { - if w == nil || w.pw == nil { - return 0, ErrInvalidObject - } - if err := w.pw.writePacked(p); err != nil { - return 0, err - } - return len(p), nil -} - // packHeaderEncode encodes a pack object header (type + size). func packHeaderEncode(ty ObjectType, size int) ([]byte, error) { if size < 0 { |
