fsck_object(): allow passing object data separately from the object itself
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 10 Sep 2014 13:52:51 +0000 (15:52 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Sep 2014 20:54:21 +0000 (13:54 -0700)
commit90a398bbd72477d5d228818db5665fdfcf13431b
tree12abb9831db62671caa5e8f07f50c79717e95949
parentfe8e3b71805cd13d139b62fa5a0c75387568c9ea
fsck_object(): allow passing object data separately from the object itself

When fsck'ing an incoming pack, we need to fsck objects that cannot be
read via read_sha1_file() because they are not local yet (and might even
be rejected if transfer.fsckobjects is set to 'true').

For commits, there is a hack in place: we basically cache commit
objects' buffers anyway, but the same is not true, say, for tag objects.

By refactoring fsck_object() to take the object buffer and size as
optional arguments -- optional, because we still fall back to the
previous method to look at the cached commit objects if the caller
passes NULL -- we prepare the machinery for the upcoming handling of tag
objects.

The assumption that such buffers are inherently NUL terminated is now
wrong, of course, hence we pass the size of the buffer so that we can
add a sanity check later, to prevent running past the end of the buffer.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fsck.c
builtin/index-pack.c
builtin/unpack-objects.c
fsck.c
fsck.h