aboutsummaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-06-24 12:04:25 -0700
committerJunio C Hamano <gitster@pobox.com>2017-06-24 12:04:25 -0700
commit6ba4d62ba8fb00310df6e6cc0d4437871106c5ed (patch)
tree1ecc1ebb2de078b8b25f607cc0f2947b25cab462 /read-cache.c
parent5402b1352f5181247405fbff1887008a0cb3b04a (diff)
parent64719b115d61582fa501690ee6caff4c478b4b1a (diff)
downloadgit-6ba4d62ba8fb00310df6e6cc0d4437871106c5ed.tar.gz
git-6ba4d62ba8fb00310df6e6cc0d4437871106c5ed.tar.xz
Merge branch 'nd/split-index-unshare'
* nd/split-index-unshare: Revert "split-index: add and use unshare_split_index()"
Diffstat (limited to 'read-cache.c')
-rw-r--r--read-cache.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/read-cache.c b/read-cache.c
index bc156a133..f02692005 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1877,9 +1877,15 @@ int discard_index(struct index_state *istate)
{
int i;
- unshare_split_index(istate, 1);
- for (i = 0; i < istate->cache_nr; i++)
+ for (i = 0; i < istate->cache_nr; i++) {
+ if (istate->cache[i]->index &&
+ istate->split_index &&
+ istate->split_index->base &&
+ istate->cache[i]->index <= istate->split_index->base->cache_nr &&
+ istate->cache[i] == istate->split_index->base->cache[istate->cache[i]->index - 1])
+ continue;
free(istate->cache[i]);
+ }
resolve_undo_clear_index(istate);
istate->cache_nr = 0;
istate->cache_changed = 0;