# HG changeset patch # User Kenichi Handa # Date 1042681462 0 # Node ID 075b873e1ca3b7ad4510c3a25268edee72a69e26 # Parent c218b50ede104c21ec234783ee57f66d36a5c8a7 (GET_CHAR_BEFORE_2): Fix for the case that the previous char is eight-bit-graphic. (re_search_2): Likewise. diff -r c218b50ede10 -r 075b873e1ca3 regex.c --- a/regex.c Mon Sep 30 08:07:42 2002 +0000 +++ b/regex.c Thu Jan 16 01:44:22 2003 +0000 @@ -156,8 +156,12 @@ { \ re_char *dtemp = (p) == (str2) ? (end1) : (p); \ re_char *dlimit = ((p) > (str2) && (p) <= (end2)) ? (str2) : (str1); \ + re_char *d0 = dtemp; \ while (dtemp-- > dlimit && !CHAR_HEAD_P (*dtemp)); \ - c = STRING_CHAR (dtemp, (p) - dtemp); \ + if (MULTIBYTE_FORM_LENGTH (dtemp, d0 - dtemp) == d0 - dtemp) \ + c = STRING_CHAR (dtemp, d0 - dtemp); \ + else \ + c = d0[-1]; \ } \ else \ (c = ((p) == (str2) ? (end1) : (p))[-1]); \ @@ -4046,18 +4050,16 @@ p--, len++; /* Adjust it. */ -#if 0 /* XXX */ if (MULTIBYTE_FORM_LENGTH (p, len + 1) != (len + 1)) - ; - else -#endif - { - range += len; - if (range > 0) - break; - - startpos -= len; - } + /* The previous character is eight-bit-graphic which + is represented by one byte even in a multibyte + buffer/string. */ + len = 0; + range += len; + if (range > 0) + break; + + startpos -= len; } } }