Merge branch 'sb/object-store-replace'
authorJunio C Hamano <gitster@pobox.com>
Wed, 23 May 2018 05:38:09 +0000 (14:38 +0900)
committerJunio C Hamano <gitster@pobox.com>
Wed, 23 May 2018 05:38:09 +0000 (14:38 +0900)
Hotfix.

* sb/object-store-replace:
get_main_ref_store: BUG() when outside a repository
object.c: clear replace map before freeing it
replace-object.c: remove the_repository from prepare_replace_object
object.c: free replace map in raw_object_store_clear

object.c
refs.c
replace-object.c
index 66cffaf6e516f181fa391ddab125fdc16cc71cb5..97245fdea25c2d1342e0d4e791d82e2aeadaed7c 100644 (file)
--- a/object.c
+++ b/object.c
@@ -481,6 +481,9 @@ void raw_object_store_clear(struct raw_object_store *o)
        FREE_AND_NULL(o->objectdir);
        FREE_AND_NULL(o->alternate_db);
 
+       oidmap_free(o->replace_map, 1);
+       FREE_AND_NULL(o->replace_map);
+
        free_alt_odbs(o);
        o->alt_odb_tail = NULL;
 
diff --git a/refs.c b/refs.c
index 64aadd14c95274316fae2022741df91d2ec64c78..2e4a42f45963c5f8725b339cdab7b6a52e685e4d 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1668,6 +1668,9 @@ struct ref_store *get_main_ref_store(struct repository *r)
        if (r->refs)
                return r->refs;
 
+       if (!r->gitdir)
+               BUG("attempting to get main_ref_store outside of repository");
+
        r->refs = ref_store_init(r->gitdir, REF_STORE_ALL_CAPS);
        return r->refs;
 }
index 246b98cd4f1e4d229109bbeb8ffe90731df43df0..801b5c16789f5ac7d87a4409d8218311a52db0aa 100644 (file)
@@ -37,7 +37,7 @@ static void prepare_replace_object(struct repository *r)
                return;
 
        r->objects->replace_map =
-               xmalloc(sizeof(*the_repository->objects->replace_map));
+               xmalloc(sizeof(*r->objects->replace_map));
        oidmap_init(r->objects->replace_map, 0);
 
        for_each_replace_ref(r, register_replace_ref, NULL);