diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-10-17 10:47:58 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-10-17 10:47:58 +0400 |
commit | 050dfc4535578c2c49832ffeb3f05dbd4c6adff2 (patch) | |
tree | 216b983a3c019f5a8a3721550afcb271d2185dbb | |
parent | b3118bdc91876cbc04b7e81dcf7bea71d86ce4f8 (diff) | |
parent | cfe370c6476392095bc3f18013d195b1cccd6184 (diff) |
Merge branch 'maint-1.6.4' into maint
* maint-1.6.4:
grep: do not segfault when -f is used
-rw-r--r-- | builtin-grep.c | 2 | ||||
-rwxr-xr-x | t/t7002-grep.sh | 66 |
2 files changed, 67 insertions, 1 deletions
diff --git a/builtin-grep.c b/builtin-grep.c index 761799d7d0..1df25b07b5 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -631,7 +631,7 @@ static int file_callback(const struct option *opt, const char *arg, int unset) struct grep_opt *grep_opt = opt->value; FILE *patterns; int lno = 0; - struct strbuf sb; + struct strbuf sb = STRBUF_INIT; patterns = fopen(arg, "r"); if (!patterns) diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh index ae56a36eac..ae5290ab43 100755 --- a/t/t7002-grep.sh +++ b/t/t7002-grep.sh @@ -213,6 +213,72 @@ test_expect_success 'grep -e A --and --not -e B' ' test_cmp expected actual ' +test_expect_success 'grep -f, non-existent file' ' + test_must_fail git grep -f patterns +' + +cat >expected <<EOF +file:foo mmap bar +file:foo_mmap bar +file:foo_mmap bar mmap +file:foo mmap bar_mmap +file:foo_mmap bar mmap baz +EOF + +cat >pattern <<EOF +mmap +EOF + +test_expect_success 'grep -f, one pattern' ' + git grep -f pattern >actual && + test_cmp expected actual +' + +cat >expected <<EOF +file:foo mmap bar +file:foo_mmap bar +file:foo_mmap bar mmap +file:foo mmap bar_mmap +file:foo_mmap bar mmap baz +t/a/v:vvv +t/v:vvv +v:vvv +EOF + +cat >patterns <<EOF +mmap +vvv +EOF + +test_expect_success 'grep -f, multiple patterns' ' + git grep -f patterns >actual && + test_cmp expected actual +' + +cat >expected <<EOF +file:foo mmap bar +file:foo_mmap bar +file:foo_mmap bar mmap +file:foo mmap bar_mmap +file:foo_mmap bar mmap baz +t/a/v:vvv +t/v:vvv +v:vvv +EOF + +cat >patterns <<EOF + +mmap + +vvv + +EOF + +test_expect_success 'grep -f, ignore empty lines' ' + git grep -f patterns >actual && + test_cmp expected actual +' + cat >expected <<EOF y:y yy -- |