summaryrefslogtreecommitdiff
path: root/packfile.c
diff options
context:
space:
mode:
authorDerrick Stolee <stolee@gmail.com>2018-10-25 12:54:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-10-26 02:49:06 (GMT)
commitdc7d66433536b5acca653c3c5ecf9c2d91462eba (patch)
tree461f11e9e79752a20d04cbe3bc04569537271419 /packfile.c
parent0465a50506023df0932fe0534fe6ac6712c0d854 (diff)
downloadgit-dc7d66433536b5acca653c3c5ecf9c2d91462eba.zip
git-dc7d66433536b5acca653c3c5ecf9c2d91462eba.tar.gz
git-dc7d66433536b5acca653c3c5ecf9c2d91462eba.tar.bz2
packfile: close multi-pack-index in close_all_packs
Whenever we delete pack-files from the object directory, we need to also delete the multi-pack-index that may refer to those objects. Sometimes, this connection is obvious, like during a repack. Other times, this is less obvious, like when gc calls a repack command and then does other actions on the objects, like write a commit-graph file. The pattern we use to avoid out-of-date in-memory packed_git structs is to call close_all_packs(). This should also call close_midx(). Since we already pass an object store to close_all_packs(), this is a nicely scoped operation. This fixes a test failure when running t6500-gc.sh with GIT_TEST_MULTI_PACK_INDEX=1. Reported-by: Szeder Gábor <szeder.dev@gmail.com> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'packfile.c')
-rw-r--r--packfile.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/packfile.c b/packfile.c
index 841b361..37fcd8f 100644
--- a/packfile.c
+++ b/packfile.c
@@ -339,6 +339,11 @@ void close_all_packs(struct raw_object_store *o)
BUG("want to close pack marked 'do-not-close'");
else
close_pack(p);
+
+ if (o->multi_pack_index) {
+ close_midx(o->multi_pack_index);
+ o->multi_pack_index = NULL;
+ }
}
/*