]> Savannah Git Hosting - gnulib.git/commitdiff
(re_search_2): Fix for the case of unibyte buffer.
authorKenichi Handa <handa@m17n.org>
Mon, 7 Oct 2002 12:58:29 +0000 (12:58 +0000)
committerKenichi Handa <handa@m17n.org>
Mon, 7 Oct 2002 12:58:29 +0000 (12:58 +0000)
regex.c

diff --git a/regex.c b/regex.c
index a7ded8775153190a5c8c689ca7d1b643b068bcf1..8cbc5f7949aa1d5aed3ce755607830048a481a25 100644 (file)
--- a/regex.c
+++ b/regex.c
@@ -4099,13 +4099,26 @@ re_search_2 (bufp, str1, size1, str2, size2, startpos, range, regs, stop)
              int room = (startpos >= size1
                          ? size2 + size1 - startpos
                          : size1 - startpos);
-             buf_ch = RE_STRING_CHAR (d, room);
-             if (! target_multibyte)
-               MAKE_CHAR_MULTIBYTE (buf_ch);
-             buf_ch = TRANSLATE (buf_ch);
 
-             if (! fastmap[CHAR_LEADING_CODE (buf_ch)])
-               goto advance;
+             if (multibyte)
+               {
+                 /* Case of Emacs.  */
+                 if (target_multibyte)
+                   buf_ch = RE_STRING_CHAR (d, room);
+                 else
+                   {
+                     buf_ch = *d;
+                     MAKE_CHAR_MULTIBYTE (buf_ch);
+                   }
+                 buf_ch = TRANSLATE (buf_ch);
+                 if (! fastmap[CHAR_LEADING_CODE (buf_ch)])
+                   goto advance;
+               }
+             else
+               {
+                 if (! fastmap[TRANSLATE (*d)])
+                   goto advance;
+               }
            }
        }