From be63ecd9711b46135bbff1769c2e4c3642255ef1 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 13 Jun 2026 03:32:21 +0000 Subject: Unify lengths --- object/header/append.go | 4 ++-- object/header/parse.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'object/header') diff --git a/object/header/append.go b/object/header/append.go index b204002d..b8d6669d 100644 --- a/object/header/append.go +++ b/object/header/append.go @@ -8,13 +8,13 @@ import ( ) // Append appends a canonical loose-object header ("type size\x00") to dst. -func Append(dst []byte, ty typ.Type, size uint64) []byte { +func Append(dst []byte, ty typ.Type, size int) []byte { tyName := ty.Name() dst = slices.Grow(dst, len(tyName)+1+19+1) dst = append(dst, tyName...) dst = append(dst, ' ') - dst = strconv.AppendUint(dst, size, 10) + dst = strconv.AppendInt(dst, int64(size), 10) dst = append(dst, 0) return dst diff --git a/object/header/parse.go b/object/header/parse.go index 5829a755..2b0c78e1 100644 --- a/object/header/parse.go +++ b/object/header/parse.go @@ -7,13 +7,14 @@ import ( "strconv" "lindenii.org/go/furgit/object/typ" + "lindenii.org/go/lgo/intconv" ) // ErrInvalidHeader indicates a malformed loose-object header. var ErrInvalidHeader = errors.New("object/header: invalid header") // Parse parses a canonical loose-object header ("type size\x00"). -func Parse(data []byte) (ty typ.Type, size uint64, consumed int, err error) { +func Parse(data []byte) (ty typ.Type, size int, consumed int, err error) { space := bytes.IndexByte(data, ' ') if space <= 0 { return 0, 0, 0, fmt.Errorf("%w: missing ' ' type/size separator", ErrInvalidHeader) @@ -36,7 +37,12 @@ func Parse(data []byte) (ty typ.Type, size uint64, consumed int, err error) { return 0, 0, 0, fmt.Errorf("%w: empty size field", ErrInvalidHeader) } - size, err = strconv.ParseUint(string(sizeBytes), 10, 64) + sizeU, err := strconv.ParseUint(string(sizeBytes), 10, 64) + if err != nil { + return 0, 0, 0, fmt.Errorf("%w: size %q: %w", ErrInvalidHeader, sizeBytes, err) + } + + size, err = intconv.Uint64ToInt(sizeU) if err != nil { return 0, 0, 0, fmt.Errorf("%w: size %q: %w", ErrInvalidHeader, sizeBytes, err) } -- cgit v1.3.1-10-gc9f91