(search_buffer): Use charset-id as charset_base_code in UTF-2000 [I'm
authortomo <tomo>
Sat, 9 Dec 2000 09:13:13 +0000 (09:13 +0000)
committertomo <tomo>
Sat, 9 Dec 2000 09:13:13 +0000 (09:13 +0000)
not sure it is right thing].
(boyer_moore): Likewise.

src/search.c

index 169e1d7..b686c51 100644 (file)
@@ -1277,7 +1277,15 @@ search_buffer (struct buffer *buf, Lisp_Object string, Bufpos bufpos,
            {
              /* Keep track of which character set row
                 contains the characters that need translation.  */
+#ifdef UTF2000
+             Lisp_Object ccs;
+             int charset_base_code;
+
+             ENCODE_CHAR (c, ccs);
+             charset_base_code = XCHARSET_ID (ccs);
+#else
              int charset_base_code = c & ~CHAR_FIELD3_MASK;
+#endif
              if (charset_base == -1)
                charset_base = charset_base_code;
              else if (charset_base != charset_base_code)
@@ -1572,11 +1580,19 @@ boyer_moore (struct buffer *buf, Bufbyte *base_pat, Bytecount len,
          /* Is *PTR the last byte of a character?  */
          if (pat_end - ptr == 1 || BUFBYTE_FIRST_BYTE_P (ptr[1]))
            {
+#ifdef UTF2000
+             Lisp_Object ccs;
+#endif
              Bufbyte *charstart = ptr;
              while (!BUFBYTE_FIRST_BYTE_P (*charstart))
                charstart--;
              untranslated = charptr_emchar (charstart);
+#ifdef UTF2000
+             ENCODE_CHAR (untranslated, ccs);
+             if (charset_base == XCHARSET_ID (ccs))
+#else
              if (charset_base == (untranslated & ~CHAR_FIELD3_MASK))
+#endif
                {
                  ch = TRANSLATE (trt, untranslated);
                  if (!BUFBYTE_FIRST_BYTE_P (*ptr))