From 8aa544539d452f310b6a88348f2a50bda017e317 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 22 Nov 2025 08:00:00 +0800 Subject: obj: call parseObjectBody in ReadObject instead of loose/pack readers --- obj.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'obj.go') diff --git a/obj.go b/obj.go index b82e0403..4156c36c 100644 --- a/obj.go +++ b/obj.go @@ -95,18 +95,25 @@ func parseObjectBody(ty ObjectType, id Hash, body []byte, repo *Repository) (Sto // ReadObject resolves an ID. func (repo *Repository) ReadObject(id Hash) (StoredObject, error) { - obj, err := repo.looseRead(id) + ty, body, err := repo.looseRead(id) if err == nil { - return obj, nil + obj, parseErr := parseObjectBody(ty, id, body.Bytes(), repo) + body.Release() + return obj, parseErr } if !errors.Is(err, ErrNotFound) { return nil, err } - obj, err = repo.packRead(id) + ty, body, err = repo.packRead(id) if errors.Is(err, ErrNotFound) { return nil, ErrInvalidObject } - return obj, err + if err != nil { + return nil, err + } + obj, parseErr := parseObjectBody(ty, id, body.Bytes(), repo) + body.Release() + return obj, parseErr } // ReadObjectTypeSize reports the object type and size. -- cgit v1.3.1-10-gc9f91