diff options
| author | 2026-03-04 08:26:56 +0800 | |
|---|---|---|
| committer | 2026-03-04 08:59:53 +0800 | |
| commit | ab7501be34032fb9e5c48726a68ae90a917af9eb (patch) | |
| tree | 20d005647569befea8133e953c3270e8fd2a2a5b /objectstore/packed/read_header_resolve.go | |
| parent | *: gofumpt (diff) | |
| signature | No signature | |
*: Lint
Diffstat (limited to 'objectstore/packed/read_header_resolve.go')
| -rw-r--r-- | objectstore/packed/read_header_resolve.go | 5 |
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{ |
