On Wed, Dec 3, 2014 at 2:18 AM, Norihiro Tanaka <[email protected]> wrote: > On Tue, 2 Dec 2014 08:35:32 -0800 > Jim Meyering <[email protected]> wrote: >> I'm not sure I understand the above paragraph. >> Is this what you intended? >> >> That will cause an invalid match or an infinite loop. >> By the way, there is no option to make grep use >> searching mode rather than matching mode. > > That will cause an invalid match or an infinite loop. > By the way, there is no option to make grep use > matching mode rather than searching mode. > >> Can you provide a test case to trigger this? >> Is it easier to construct a test case using gawk? > > Yes, but it uses neither grep nor gawk. It uses an auxiliary program > writtern only to accomplish the test, as grep and gawk do *NOT* set 0 to > forth argument of dfacomp. I added tests of failure and infloop version.
Thank you for adding that test program and a script to run it.
I have made some changes:
- reworded the commit logs
- removed the NEWS entry, since this is not a user-visible change
- changed a 4-line sequence in dfa.c to a single one using the
ternary operator:
- if (allow_nl)
- s = d->newlines[s1];
- else
- s = 0;
+ s = allow_nl ? d->newlines[s1] : 0;
- fixed the new "make syntax-check" violations induced
by the addition of that new .c file.
- changed the test script to use warn_ rather than printf
- replaced the full hex SHA1 in the log with the more useful
and readable "git desc ..." output: v2.5.4-144-gbafa134
See attached:
0001-dfa-avoid-invalid-match-or-infinite-loop-in-unused-m.patch
Description: Binary data
0002-dfa-simplify-dfaexec.patch
Description: Binary data
