Unify code paths of threaded greps There were three awfully similar code paths ending the threaded grep. It is better to avoid duplicated code, though. This change might very well prevent a race, where the grep patterns were free()d before waiting that all threads finished. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/builtin/grep.c b/builtin/grep.c index 5b8879f..2111212 100644 --- a/builtin/grep.c +++ b/builtin/grep.c
@@ -590,7 +590,6 @@ if (hit && opt->status_only) break; } - free_grep_patterns(opt); return hit; } @@ -708,7 +707,6 @@ if (hit && opt->status_only) break; } - free_grep_patterns(opt); return hit; } @@ -1019,32 +1017,22 @@ } if (!use_index) { - int hit; if (cached) die("--cached cannot be used with --no-index."); if (list.nr) die("--no-index cannot be used with revs."); hit = grep_directory(&opt, paths); - if (use_threads) - hit |= wait_all(); - return !hit; - } - - if (!list.nr) { - int hit; + } else if (!list.nr) { if (!cached) setup_work_tree(); hit = grep_cache(&opt, paths, cached); - if (use_threads) - hit |= wait_all(); - return !hit; + } else { + if (cached) + die("both --cached and trees are given."); + hit = grep_objects(&opt, paths, &list); } - if (cached) - die("both --cached and trees are given."); - hit = grep_objects(&opt, paths, &list); - if (use_threads) hit |= wait_all(); free_grep_patterns(&opt);