[PATCH 2/4] Unify code paths of threaded greps
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jun 12, 2010, 16:32 UTC
- Message-ID
- <20100612163211.GB5657@burratino>
- In-Reply-To
- <20100612162945.GB1406@burratino>
From: Johannes Schindelin <johannes.schindelin@gmx.de>
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> --- builtin/grep.c | 22 +++++----------------- 1 files changed, 5 insertions(+), 17 deletions(-)
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 @@ static int grep_cache(struct grep_opt *opt, const char **paths, int cached) if (hit && opt->status_only) break; } - free_grep_patterns(opt); return hit; } @@ -708,7 +707,6 @@ static int grep_directory(struct grep_opt *opt, const char **paths) if (hit && opt->status_only) break; } - free_grep_patterns(opt); return hit; } @@ -1019,32 +1017,22 @@ int cmd_grep(int argc, const char **argv, const char *prefix) } 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);
-- 1.7.1