]> code.delx.au - gnu-emacs/commitdiff
(regex_compile) <normal_char>: Pay attention to multibyteness.
authorKenichi Handa <handa@m17n.org>
Fri, 11 Aug 2000 01:56:59 +0000 (01:56 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 11 Aug 2000 01:56:59 +0000 (01:56 +0000)
(analyse_first) <exactn>: Setup fastmap correctly for
eight-bit-control characters.

src/regex.c

index 1b796c088868c7f26bec95a9fcc5f2610db67173..97cc409b545237df80d9dd884af2ed525fef376a 100644 (file)
@@ -3064,7 +3064,12 @@ regex_compile (pattern, size, syntax, bufp)
 
          GET_BUFFER_SPACE (MAX_MULTIBYTE_LENGTH);
          {
-           int len = CHAR_STRING (c, b);
+           int len;
+
+           if (multibyte)
+             len = CHAR_STRING (c, b);
+           else
+             *b = c, len = 1;
            b += len;
            (*pending_exact) += len;
          }
@@ -3375,7 +3380,15 @@ analyse_first (p, pend, fastmap, multibyte)
         with `break'.  */
 
        case exactn:
-         if (fastmap) fastmap[p[1]] = 1;
+         if (fastmap)
+           {
+             int c = RE_STRING_CHAR (p + 1, pend - p);
+
+             if (SINGLE_BYTE_CHAR_P (c))
+               fastmap[c] = 1;
+             else
+               fastmap[p[1]] = 1;
+           }
          break;