From: Johannes Sixt Date: Mon, 13 Nov 2006 13:50:00 +0000 (+0000) Subject: Catch errors when writing an index that contains invalid objects. X-Git-Tag: v1.4.4~1^2~1 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=3d12d0cfbbda0feb6305d6c53f3cf9aae2330c4c;p=git.git Catch errors when writing an index that contains invalid objects. If git-write-index is called without --missing-ok, it reports invalid objects that it finds in the index. But without this patch it dies right away or may run into an infinite loop. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- diff --git a/cache-tree.c b/cache-tree.c index a80326289..9b73c8669 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -282,6 +282,8 @@ static int update_one(struct cache_tree *it, baselen + sublen + 1, missing_ok, dryrun); + if (subcnt < 0) + return subcnt; i += subcnt - 1; sub->used = 1; } diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh index 2c9bbb59b..6aff0b808 100755 --- a/t/t0000-basic.sh +++ b/t/t0000-basic.sh @@ -209,6 +209,28 @@ test_expect_success \ 'validate object ID for a known tree.' \ 'test "$ptree" = 3c5e5399f3a333eddecce7a9b9465b63f65f51e2' +cat >badobjects <