Merge branch 'sg/doc-pretty-formats'
[gitweb.git] / read-cache.c
index bc156a133e9ff197e3d98c63d66f2d958f47f564..f0269200526bf17f7b9b04b3d0b80383c99e73b8 100644 (file)
@@ -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;