aboutsummaryrefslogtreecommitdiff
path: root/obj_tree.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-01-17 22:56:53 +0800
committerGravatar Runxi Yu2026-01-17 22:56:53 +0800
commit7a0ab5f77917a36a87945f6a88b036b9b6ba88ee (patch)
tree06947107af26e45bb5006276daa4b4d611f5dee2 /obj_tree.go
parentREADME: Clarify that the sha1 build tag is for testing only (diff)
signatureNo signature
hash: Key by algorithm, not size
Diffstat (limited to 'obj_tree.go')
-rw-r--r--obj_tree.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/obj_tree.go b/obj_tree.go
index ccbea694..0ae8b3ac 100644
--- a/obj_tree.go
+++ b/obj_tree.go
@@ -83,7 +83,7 @@ func parseTree(id Hash, body []byte, repo *Repository) (*StoredTree, error) {
}
var child Hash
copy(child.data[:], body[i:i+repo.hashSize])
- child.size = repo.hashSize
+ child.algo = repo.hashAlgo
i += repo.hashSize
mode, err := strconv.ParseUint(string(modeBytes), 8, 32)
@@ -112,7 +112,7 @@ func (tree *Tree) serialize() []byte {
var bodyLen int
for _, e := range tree.Entries {
mode := strconv.FormatUint(uint64(e.Mode), 8)
- bodyLen += len(mode) + 1 + len(e.Name) + 1 + e.ID.size
+ bodyLen += len(mode) + 1 + len(e.Name) + 1 + e.ID.Size()
}
body := make([]byte, bodyLen)
@@ -125,7 +125,8 @@ func (tree *Tree) serialize() []byte {
pos += copy(body[pos:], e.Name)
body[pos] = 0
pos++
- pos += copy(body[pos:], e.ID.data[:e.ID.size])
+ size := e.ID.Size()
+ pos += copy(body[pos:], e.ID.data[:size])
}
return body