summaryrefslogtreecommitdiff
path: root/split-index.h
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2017-05-05 14:57:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-05-08 01:50:20 (GMT)
commitf9d7abec2ad2f9eb3d8873169cc28c34273df082 (patch)
tree8ac02895a20ac3928aa40fbc1d5e2c58ba47bb8e /split-index.h
parent4fa66c85f11bc5a541462ca5ae3246aa0ce02e74 (diff)
downloadgit-f9d7abec2ad2f9eb3d8873169cc28c34273df082.zip
git-f9d7abec2ad2f9eb3d8873169cc28c34273df082.tar.gz
git-f9d7abec2ad2f9eb3d8873169cc28c34273df082.tar.bz2
split-index: add and use unshare_split_index()
When split-index is being used, we have two cache_entry arrays in index_state->cache[] and index_state->split_index->base->cache[]. index_state->cache[] may share the same entries with base->cache[] so we can quickly determine what entries are shared. This makes memory management tricky, we can't free base->cache[] until we know index_state->cache[] does not point to any of those entries. unshare_split_index() is added for this purpose, to find shared entries and either duplicate them in index_state->cache[], or discard them. Either way it should be safe to free base->cache[] after unshare_split_index(). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'split-index.h')
-rw-r--r--split-index.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/split-index.h b/split-index.h
index df91c1b..65c0f09 100644
--- a/split-index.h
+++ b/split-index.h
@@ -33,5 +33,6 @@ void finish_writing_split_index(struct index_state *istate);
void discard_split_index(struct index_state *istate);
void add_split_index(struct index_state *istate);
void remove_split_index(struct index_state *istate);
+void unshare_split_index(struct index_state *istate, int discard);
#endif