shithub: furgit

Download patch

ref: 50cd7868cf055bce46e1a4253840089dfc602a11
parent: 7644a12dd8fbeb0c936848a4bc5cef423a8fc2b7
author: Runxi Yu <me@runxiyu.org>
date: Thu Jan 29 16:37:25 EST 2026

packed: Make packWriter implement Write directly instead of wrapping

--- a/packed_write_pack.go
+++ b/packed_write_pack.go
@@ -39,6 +39,16 @@
 	}, 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 @@
 		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 @@
 		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 @@
 		return err
 	}
 
-	zw := zlib.NewWriter(&packHashWriter{pw: pw})
+	zw := zlib.NewWriter(pw)
 	if _, err := zw.Write(delta); err != nil {
 		_ = zw.Close()
 		return err
@@ -195,20 +205,6 @@
 	copy(out.data[:], sum)
 	out.algo = pw.algo
 	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).
--