+2008-03-16 Andreas Schwab <schwab@suse.de>
+
+ * regex.c (re_match_2_internal): Correct matching of a charset
+ against latin-1 characters.
+
2008-03-16 Kenichi Handa <handa@m17n.org>
* coding.c (CHAR_STRING_ADVANCE_NO_UNIFY)
in the initial byte-length of the command. */
int count = 0;
+ /* Whether matching against a unibyte character. */
+ boolean unibyte_char = false;
+
DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : "");
range_table_exists = CHARSET_RANGE_TABLE_EXISTS_P (&p[-1]);
c = TRANSLATE (c);
c1 = RE_CHAR_TO_UNIBYTE (c);
if (c1 >= 0)
- c = c1;
+ {
+ unibyte_char = true;
+ c = c1;
+ }
}
else
{
c1 = TRANSLATE (c1);
c1 = RE_CHAR_TO_UNIBYTE (c1);
if (c1 >= 0)
- c = c1;
+ {
+ unibyte_char = true;
+ c = c1;
+ }
}
}
- if (c < (1 << BYTEWIDTH))
+ if (unibyte_char && c < (1 << BYTEWIDTH))
{ /* Lookup bitmap. */
/* Cast to `unsigned' instead of `unsigned char' in
case the bit list is a full 32 bytes long. */