string_multibyte = SBYTES (string) > SCHARS (string);
bzero (fastmap, sizeof fastmap);
- if (multibyte)
- char_ranges = (int *) alloca (SCHARS (string) * (sizeof (int)) * 2);
str = SDATA (string);
size_byte = SBYTES (string);
fastmap[CHAR_LEADING_CODE (c)] = 1;
range_start_byte = i;
range_start_char = c;
+ char_ranges = (int *) alloca (sizeof (int) * 128 * 2);
for (i = 129; i < 0400; i++)
{
c = unibyte_char_to_multibyte (i);
+ range_start_char);
}
}
- else
+ else /* STRING is multibyte */
{
+ char_ranges = (int *) alloca (sizeof (int) * SCHARS (string) * 2);
+
while (i_byte < size_byte)
{
unsigned char leading_code;
i_byte += len;
}
+ if (c > c2)
+ continue;
if (ASCII_CHAR_P (c))
{
while (c <= c2 && c < 0x80)