bug-grep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18580: [PATCH] dfa: check end of an input buffer after a transition


From: Norihiro Tanaka
Subject: bug#18580: [PATCH] dfa: check end of an input buffer after a transition in non-UTF8 multibyte locales
Date: Fri, 03 Oct 2014 00:35:14 +0900

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







reply via email to

[Prev in Thread] Current Thread [Next in Thread]