diff options
| author | 2026-06-13 03:32:21 +0000 | |
|---|---|---|
| committer | 2026-06-13 04:59:51 +0000 | |
| commit | be63ecd9711b46135bbff1769c2e4c3642255ef1 (patch) | |
| tree | d5581c8b2e438af2b8ae82dd8f200393b2dbc5d3 /object/header/parse.go | |
| parent | TODO: Update (diff) | |
Unify lengths
Diffstat (limited to 'object/header/parse.go')
| -rw-r--r-- | object/header/parse.go | 10 |
1 files changed, 8 insertions, 2 deletions
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) } |
