{
/* 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)
/* 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))