Re: [PATCH v2 05/20] sparse-index: implement ensure_full_index()
From: Junio C Hamano <hidden>
Date: 2021-03-12 06:51:34
"Derrick Stolee via GitGitGadget" [off-list ref] writes:
void ensure_full_index(struct index_state *istate)
{
...
+ int i;
+ tree = lookup_tree(istate->repo, &ce->oid);
+
+ memset(&ps, 0, sizeof(ps));
+ ps.recursive = 1;
+ ps.has_wildcard = 1;
+ ps.max_depth = -1;
+
+ read_tree_recursive(istate->repo, tree,
+ ce->name, strlen(ce->name),
+ 0, &ps,
+ add_path_to_index, full);Ævar, the assumption that led to your e68237bb (tree.h API: remove support for starting at prefix != "", 2021-03-08) closes the door for this code rather badly. Please work with Derrick to figure out what the best course of action would be. Thanks.
quoted hunk
+ /* free directory entries. full entries are re-used */ + discard_cache_entry(ce); + } + + /* Copy back into original index. */ + memcpy(&istate->name_hash, &full->name_hash, sizeof(full->name_hash)); + istate->sparse_index = 0; + free(istate->cache); + istate->cache = full->cache; + istate->cache_nr = full->cache_nr; + istate->cache_alloc = full->cache_alloc; + + free(full); + + trace2_region_leave("index", "ensure_full_index", istate->repo); }