aboutsummaryrefslogtreecommitdiff
path: root/objectstore/packed/delta_plan.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-04 08:26:56 +0800
committerGravatar Runxi Yu2026-03-04 08:59:53 +0800
commitab7501be34032fb9e5c48726a68ae90a917af9eb (patch)
tree20d005647569befea8133e953c3270e8fd2a2a5b /objectstore/packed/delta_plan.go
parent*: gofumpt (diff)
*: Lint
Diffstat (limited to 'objectstore/packed/delta_plan.go')
-rw-r--r--objectstore/packed/delta_plan.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/objectstore/packed/delta_plan.go b/objectstore/packed/delta_plan.go
index 5f2ae959..b0b0324c 100644
--- a/objectstore/packed/delta_plan.go
+++ b/objectstore/packed/delta_plan.go
@@ -38,6 +38,7 @@ func (store *Store) deltaBuildChain(start location) (deltaChain, error) {
if _, ok := visited[current]; ok {
return deltaChain{}, fmt.Errorf("objectstore/packed: delta cycle while resolving object")
}
+
visited[current] = struct{}{}
_, meta, err := store.entryMetaAt(current)
@@ -48,6 +49,7 @@ func (store *Store) deltaBuildChain(start location) (deltaChain, error) {
if packfmt.IsBaseObjectType(meta.ty) {
chain.baseLoc = current
chain.baseType = meta.ty
+
return chain, nil
}
@@ -57,10 +59,12 @@ func (store *Store) deltaBuildChain(start location) (deltaChain, error) {
loc: current,
dataOffset: meta.dataOffset,
})
+
next, err := store.lookup(meta.baseRefID)
if err != nil {
return deltaChain{}, err
}
+
current = next
case objecttype.TypeOfsDelta:
chain.deltas = append(chain.deltas, deltaNode{
@@ -88,12 +92,15 @@ func deltaDeclaredSizeAt(pack *packFile, dataOffset int) (int64, error) {
if err != nil {
return 0, err
}
+
defer func() { _ = reader.Close() }()
br := bufio.NewReaderSize(reader, 32)
+
_, size, err := deltaapply.ReadHeaderSizes(br)
if err != nil {
return 0, err
}
+
return int64(size), nil
}