aboutsummaryrefslogtreecommitdiff
path: root/objectstore/packed/read_header_resolve.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/read_header_resolve.go
parent*: gofumpt (diff)
signatureNo signature
*: Lint
Diffstat (limited to 'objectstore/packed/read_header_resolve.go')
-rw-r--r--objectstore/packed/read_header_resolve.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/objectstore/packed/read_header_resolve.go b/objectstore/packed/read_header_resolve.go
index cf49fe2b..420d9363 100644
--- a/objectstore/packed/read_header_resolve.go
+++ b/objectstore/packed/read_header_resolve.go
@@ -17,12 +17,14 @@ func (store *Store) resolveHeaderAt(start location) (objecttype.Type, int64, err
if _, ok := visited[current]; ok {
return objecttype.TypeInvalid, 0, fmt.Errorf("objectstore/packed: delta cycle while resolving object header")
}
+
visited[current] = struct{}{}
pack, meta, err := store.entryMetaAt(current)
if err != nil {
return objecttype.TypeInvalid, 0, err
}
+
if declaredSize < 0 {
if packfmt.IsBaseObjectType(meta.ty) {
declaredSize = meta.size
@@ -31,9 +33,11 @@ func (store *Store) resolveHeaderAt(start location) (objecttype.Type, int64, err
if err != nil {
return objecttype.TypeInvalid, 0, err
}
+
declaredSize = size
}
}
+
if packfmt.IsBaseObjectType(meta.ty) {
return meta.ty, declaredSize, nil
}
@@ -44,6 +48,7 @@ func (store *Store) resolveHeaderAt(start location) (objecttype.Type, int64, err
if err != nil {
return objecttype.TypeInvalid, 0, err
}
+
current = next
case objecttype.TypeOfsDelta:
current = location{