]> git.ipfire.org Git - thirdparty/git.git/blobdiff - read-cache.c
git-checkout.txt: document -d short option for --detach
[thirdparty/git.git] / read-cache.c
index 8ed1c29b541121214ab50b21a2f262edc406c807..fa291cdbee0bb435122194c3e0fa8efdb750c47e 100644 (file)
@@ -89,8 +89,10 @@ static struct mem_pool *find_mem_pool(struct index_state *istate)
        else
                pool_ptr = &istate->ce_mem_pool;
 
-       if (!*pool_ptr)
-               mem_pool_init(pool_ptr, 0);
+       if (!*pool_ptr) {
+               *pool_ptr = xmalloc(sizeof(**pool_ptr));
+               mem_pool_init(*pool_ptr, 0);
+       }
 
        return *pool_ptr;
 }
@@ -2006,11 +2008,12 @@ static unsigned long load_all_cache_entries(struct index_state *istate,
 {
        unsigned long consumed;
 
+       istate->ce_mem_pool = xmalloc(sizeof(*istate->ce_mem_pool));
        if (istate->version == 4) {
-               mem_pool_init(&istate->ce_mem_pool,
+               mem_pool_init(istate->ce_mem_pool,
                                estimate_cache_size_from_compressed(istate->cache_nr));
        } else {
-               mem_pool_init(&istate->ce_mem_pool,
+               mem_pool_init(istate->ce_mem_pool,
                                estimate_cache_size(mmap_size, istate->cache_nr));
        }
 
@@ -2070,7 +2073,8 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
        if (istate->name_hash_initialized)
                BUG("the name hash isn't thread safe");
 
-       mem_pool_init(&istate->ce_mem_pool, 0);
+       istate->ce_mem_pool = xmalloc(sizeof(*istate->ce_mem_pool));
+       mem_pool_init(istate->ce_mem_pool, 0);
 
        /* ensure we have no more threads than we have blocks to process */
        if (nr_threads > ieot->nr)
@@ -2097,11 +2101,12 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
                nr = 0;
                for (j = p->ieot_start; j < p->ieot_start + p->ieot_blocks; j++)
                        nr += p->ieot->entries[j].nr;
+               istate->ce_mem_pool = xmalloc(sizeof(*istate->ce_mem_pool));
                if (istate->version == 4) {
-                       mem_pool_init(&p->ce_mem_pool,
+                       mem_pool_init(p->ce_mem_pool,
                                estimate_cache_size_from_compressed(nr));
                } else {
-                       mem_pool_init(&p->ce_mem_pool,
+                       mem_pool_init(p->ce_mem_pool,
                                estimate_cache_size(mmap_size, nr));
                }
 
@@ -2358,7 +2363,7 @@ int discard_index(struct index_state *istate)
 
        if (istate->ce_mem_pool) {
                mem_pool_discard(istate->ce_mem_pool, should_validate_cache_entries());
-               istate->ce_mem_pool = NULL;
+               FREE_AND_NULL(istate->ce_mem_pool);
        }
 
        return 0;