Skip to content

Commit

Permalink
grep: fix word-regexp at the beginning of lines
Browse files Browse the repository at this point in the history
After bol is forwarded, it doesn't represent the beginning of the line
any more.  This means that the beginning-of-line marker (^) mustn't match,
i.e. the regex flag REG_NOTBOL needs to be set.

This bug was introduced by fb62eb7
("grep -w: forward to next possible position after rejected match").

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
René Scharfe authored and Junio C Hamano committed May 23, 2009
1 parent e701fad commit dbb6a4a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
1 change: 1 addition & 0 deletions grep.c
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ static int match_one_pattern(struct grep_pat *p, char *bol, char *eol,
bol = pmatch[0].rm_so + bol + 1;
while (word_char(bol[-1]) && bol < eol)
bol++;
eflags |= REG_NOTBOL;
if (bol < eol)
goto again;
}
Expand Down
9 changes: 8 additions & 1 deletion t/t7002-grep.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ test_expect_success setup '
echo foo mmap bar_mmap
echo foo_mmap bar mmap baz
} >file &&
echo ww w >w &&
echo x x xx x >x &&
echo y yy >y &&
echo zzz > z &&
mkdir t &&
echo test >t/t &&
git add file x y z t/t &&
git add file w x y z t/t &&
test_tick &&
git commit -m initial
'
Expand All @@ -48,6 +49,12 @@ do
diff expected actual
'

test_expect_success "grep -w $L (w)" '
: >expected &&
! git grep -n -w -e "^w" >actual &&
test_cmp expected actual
'

test_expect_success "grep -w $L (x)" '
{
echo ${HC}x:1:x x xx x
Expand Down

0 comments on commit dbb6a4a

Please sign in to comment.