On 08/09/16 09:35, Jeff King wrote: > On Thu, Sep 08, 2016 at 04:14:46AM -0400, Jeff King wrote: > >> On Thu, Sep 08, 2016 at 04:10:24AM -0400, Jeff King wrote: >> >>> On Thu, Sep 08, 2016 at 09:54:51AM +0200, Johannes Schindelin wrote: >>> >>>>> diff.c | 3 ++- >>>>> diffcore-pickaxe.c | 18 ++++++++---------- >>>>> xdiff-interface.c | 13 ++++--------- >>>>> 3 files changed, 14 insertions(+), 20 deletions(-) >>>> >>>> I just realized that this should switch the test_expect_failure from 1/3 >>>> to a test_expect_success. >>> >>> Yep. I wonder if we also would want to test that we correctly find >>> regexes inside binary files. >>> >>> E.g., given a mixed binary/text file like: >>> >>> printf 'binary\0text' >file && >>> git add file && >>> git commit -m file >>> >>> then "git log -Stext" will find that file, but "--pickaxe-regex" will >>> not (using stock git). Ditto for "-Gtext". >>> >>> Your patch should fix that. >> >> Of course if I had actually _looked carefully_ at your patch, I would >> have seen that your test doesn't just check that we don't segfault, but >> actually confirms that we find the entry. >> >> Sorry for the noise. > > Actually, I take it back again. Your test case doesn't have an embedded > NUL in it (so we check that git finds it, but aside from the lack of > segfault, stock git would already find it). This reminds me ... despite the native cygwin regex library no longer having the 'regex bug' (ie t0070.5 now passes), I still have NO_REGEX set on cygwin. This is because, when building with the native library, we have an "unexpected pass" for t7008.12, which looks like: test_expect_failure 'git grep .fi a' ' git grep .fi a ' [where the file a is set up earlier by: echo 'binaryQfile' | q_to_nul >a] commit f96e5673 ("grep: use REG_STARTEND for all matching if available", 22-05-2010) introduced this test and expects ".. NUL characters themselves are not matched in any way". With the native library on cygwin they are matched, with the compat/regex they are not. Indeed, if you use the system 'grep' command (rather than 'git grep'), then it will also not match ... :-D Slightly off topic, but ... ATB, Ramsay Jones