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); > + } Focus on the change to this diff when the patch below is applied on top of the 3.5/4 I sent earlier, resulting in this diff: @@ -733,13 +732,14 @@ 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); - - if (convert_pathspec_to_filter(&revs->pruning.pathspec.items[0], - &revs->bloom_keyvecs[0], - revs->bloom_filter_settings)) - goto fail; + 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++) { + if (convert_pathspec_to_filter(&revs->pruning.pathspec.items[i], + &revs->bloom_keyvecs[i], + revs->bloom_filter_settings)) + goto fail; + } if (trace2_is_enabled() && !bloom_filter_atexit_registered) { atexit(trace2_bloom_filter_statistics_atexit); Also, I've included the hyperfine performance output in the commit message. Thanks, -Stolee --- >8 ---