> diff --git a/object-store.h b/object-store.h > index 740edcac30..9accb614fc 100644 > --- a/object-store.h > +++ b/object-store.h > @@ -481,13 +481,15 @@ int for_each_packed_object(each_packed_object_fn, void *, > * unpack_loose_header() initializes the data stream needed to unpack > * a loose object header. > * > - * Returns 0 on success. Returns negative values on error. > + * Returns 0 on success. Returns negative values on error. If the > + * header exceeds MAX_HEADER_LEN -2 will be returned. > * > * It will only parse up to MAX_HEADER_LEN bytes unless an optional > * "hdrbuf" argument is non-NULL. This is intended for use with > * OBJECT_INFO_ALLOW_UNKNOWN_TYPE to extract the bad type for (error) > * reporting. The full header will be extracted to "hdrbuf" for use > - * with parse_loose_header(). > + * with parse_loose_header(), -2 will still be returned from this > + * function to indicate that the header was too long. > */ > int unpack_loose_header(git_zstream *stream, unsigned char *map, > unsigned long mapsize, void *buffer, Can the return type be an enum in this case? > diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh > index d3d3fd733a..f12b06150e 100755 > --- a/t/t1006-cat-file.sh > +++ b/t/t1006-cat-file.sh > @@ -440,7 +440,7 @@ bogus_sha1=$(echo_without_newline "$bogus_content" | git hash-object -t $bogus_t > > test_expect_success 'die on broken object with large type under -t and -s without --allow-unknown-type' ' > cat >err.expect <<-EOF && > - error: unable to unpack $bogus_sha1 header > + error: header for $bogus_sha1 too long, exceeds 32 bytes > fatal: git cat-file: could not get object info > EOF Ah, the error message is much more informative - thanks.