Thanks. Jim Meyering wrote: > Thanks. This will work, if nothing better comes up, since > when running ASAN-enabled binaries, this evokes an abort: > > LC_ALL=zh_CN src/grep -z . < /dev/null > > [note that I dropped the "env" and using input redirection > is slightly better for debugging than using a pipe]
This is reproduced in current master only. I changed dfa.c to test it easily, compile and run. -- diff --git a/src/dfa.c b/src/dfa.c index 4f45fff..51d5879 100644 --- a/src/dfa.c +++ b/src/dfa.c @@ -3351,6 +3351,7 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, /* Can match with a multibyte character (and multi character collating element). Transition table might be updated. */ s = transit_state (d, s, &p, (unsigned char *) end); +printf ("p = %x, end = %x\n", p, end); mbp = p; trans = d->trans; } -- The result is below. $ env LC_ALL=zh_CN src/grep -z . </dev/null p = 80821a5, end = 80821a5 p = 80821a6, end = 80821a5 p = 80821a7, end = 80821a5 p = 80821a8, end = 80821a5 p = 80821a9, end = 80821a5 p = 80821aa, end = 80821a5 p = 80821ab, end = 80821a5 p = 80821ac, end = 80821a5 p = 80821ad, end = 80821a5 p = 80821ae, end = 80821a5 p = 80821af, end = 80821a5 p = 80821b0, end = 80821a5 p = 80821b1, end = 80821a5 p = 80821b2, end = 80821a5 p = 80821b3, end = 80821a5 p = 80821b4, end = 80821a5 p = 80821b5, end = 80821a5 p = 80821b6, end = 80821a5 p = 80821b7, end = 80821a5 p = 80821b8, end = 80821a5 p = 80821b9, end = 80821a5 p = 80821ba, end = 80821a5 p = 80821bb, end = 80821a5 p = 80821bc, end = 80821a5 p = 80821bd, end = 80821a5 p = 80821be, end = 80821a5 p = 80821bf, end = 80821a5 p = 80821c0, end = 80821a5 p = 80821c1, end = 80821a5