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>
This commit is contained in:
committed by
Junio C Hamano
parent
4fa66c85f1
commit
f9d7abec2a
@ -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
|
||||
|
||||
Reference in New Issue
Block a user