Commit f5020181 authored by Andreas Schwab's avatar Andreas Schwab
Browse files

(re_match_2_internal): Correct matching of a charset

against latin-1 characters.
parent 7edd6b92
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)
......
......@@ -5648,6 +5648,9 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
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]);
......@@ -5667,7 +5670,10 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
c = TRANSLATE (c);
c1 = RE_CHAR_TO_UNIBYTE (c);
if (c1 >= 0)
c = c1;
{
unibyte_char = true;
c = c1;
}
}
else
{
......@@ -5678,11 +5684,14 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
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. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment