threads / discuss / 4591

git grep in .

Subject: git grep in .

## tl;dr

3 messages between Jun 20, 2006 and Jun 21, 2006.

replies: 2people: 2as markdown or json

Uwe Zeisberger· Jun 20, 2006, 16:08 UTC · lore
Hello,
git grep behaves wrongly if I give it . as path to search in.
E.g.
	uzeisberger@io:~/gsrc/git$ git version
	git version 1.4.0
	uzeisberger@io:~/gsrc/git$ git grep git-grep 
	.gitignore:git-grep
	Documentation/git-grep.txt:git-grep(1)
	Documentation/git-grep.txt:git-grep - Print lines matching a pattern
	Documentation/git-grep.txt:'git-grep' [--cached]
	Documentation/git.txt:gitlink:git-grep[1]::
	Makefile:       git-grep$X git-add$X git-rm$X git-rev-list$X \
	builtin-grep.c:"git-grep <option>* <rev>* [-e] <pattern> [<path>...]";
	uzeisberger@io:~/gsrc/git$ git grep git-grep .
	uzeisberger@io:~/gsrc/git$ 

I'd expect that `git grep git-grep .` gives the same results as `git grep git-grep`.

Best regards Uwe

-- 
Uwe Zeisberger

exit vi, lesson II:
: w q ! <CR>

NB: write the current file
Uwe Zeisberger· Jun 21, 2006, 09:04 UTC · re: Uwe Zeisberger · lore

[PATCH] Fix possible out-of-bounds array access

If match is "", match[-1] is accessed. Let pathspec_matches return 1 in that case indicating that "" matches everything.

Incidently this fixes git-grep'ing in ".".
Signed-off-by: Uwe Zeisberger <Uwe_Zeisberger@digi.com>
---
 builtin-grep.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/builtin-grep.c b/builtin-grep.c
index 9806499..f7767bb 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -29,10 +29,11 @@ static int pathspec_matches(const char *
 		int matchlen = strlen(match);
 		const char *cp, *meta;
 
-		if ((matchlen <= namelen) &&
-		    !strncmp(name, match, matchlen) &&
-		    (match[matchlen-1] == '/' ||
-		     name[matchlen] == '\0' || name[matchlen] == '/'))
+		if (!matchlen ||
+		    ((matchlen <= namelen) &&
+		     !strncmp(name, match, matchlen) &&
+		     (match[matchlen-1] == '/' ||
+		      name[matchlen] == '\0' || name[matchlen] == '/')))
 			return 1;
 		if (!fnmatch(match, name, 0))
 			return 1;
-- 
1.4.0

-- 
Uwe Zeisberger

http://www.google.com/search?q=12+mol+in+dozen

← back to recent threads