On 7/10/2025 4:48 AM, Lidong Yan wrote: > @@ -710,23 +709,26 @@ static void prepare_to_use_bloom_filter(struct rev_info *revs) > if (!revs->pruning.pathspec.nr) > return; > > - revs->bloom_keyvecs_nr = 1; > - CALLOC_ARRAY(revs->bloom_keyvecs, 1); > - pi = &revs->pruning.pathspec.items[0]; > + revs->bloom_keyvecs_nr = revs->pruning.pathspec.nr; > + CALLOC_ARRAY(revs->bloom_keyvecs, revs->bloom_keyvecs_nr); > + for (int i = 0; i < revs->pruning.pathspec.nr; i++) { > + pi = &revs->pruning.pathspec.items[i]; > > - /* remove single trailing slash from path, if needed */ > - if (pi->len > 0 && pi->match[pi->len - 1] == '/') { > - path_alloc = xmemdupz(pi->match, pi->len - 1); > - path = path_alloc; > - } else > - path = pi->match; > + /* remove single trailing slash from path, if needed */ > + if (pi->len > 0 && pi->match[pi->len - 1] == '/') { > + path_alloc = xmemdupz(pi->match, pi->len - 1); > + path = path_alloc; > + } else > + path = pi->match; > > - len = strlen(path); > - if (!len) > - goto fail; > + len = strlen(path); > + if (!len) > + goto fail; > > - revs->bloom_keyvecs[0] = > - bloom_keyvec_new(path, len, revs->bloom_filter_settings); > + revs->bloom_keyvecs[i] = > + bloom_keyvec_new(path, len, revs->bloom_filter_settings); > + FREE_AND_NULL(path_alloc); > + } This diff is still bigger than I was hoping, so I'm sending a couple of patches that simplify this code movement. Feel free to ignore them as being too nit-picky. --- >8 ---