if (multibyte)
char_ranges = (int *) alloca (XSTRING (string)->size * (sizeof (int)) * 2);
+ str = XSTRING (string)->data;
+ size_byte = STRING_BYTES (XSTRING (string));
+
i_byte = 0;
if (i_byte < size_byte
&& XSTRING (string)->data[0] == '^')
If STRING contains non-ASCII characters, setup char_ranges for
them and use fastmap only for their leading codes. */
- str = XSTRING (string)->data;
- size_byte = STRING_BYTES (XSTRING (string));
-
if (! string_multibyte)
{
int string_has_eight_bit = 0;
}
else
{
- while (pos < XINT (lim) && fastmap[FETCH_BYTE (pos)])
- pos++;
- pos_byte = pos;
+ while (pos < XINT (lim) && fastmap[FETCH_BYTE (pos_byte)])
+ pos++, pos_byte++;
}
}
else
}
else
{
- while (pos > XINT (lim) && fastmap[FETCH_BYTE (pos - 1)])
- pos--;
- pos_byte = pos;
+ while (pos > XINT (lim) && fastmap[FETCH_BYTE (pos_byte - 1)])
+ pos--, pos_byte--;
}
}
bzero (fastmap, sizeof fastmap);
+ if (STRING_BYTES (XSTRING (string)) > XSTRING (string)->size)
+ /* As this is very rare case, don't consider efficiency. */
+ string = string_make_unibyte (string);
+
+ str = XSTRING (string)->data;
+ size_byte = STRING_BYTES (XSTRING (string));
+
i_byte = 0;
if (i_byte < size_byte
&& XSTRING (string)->data[0] == '^')
negate = 1; i_byte++;
}
- if (STRING_BYTES (XSTRING (string)) > XSTRING (string)->size)
- /* As this is very rare case, don't consider efficiency. */
- string = string_make_unibyte (string);
- str = XSTRING (string)->data;
- size_byte = STRING_BYTES (XSTRING (string));
-
/* Find the syntaxes specified and set their elements of fastmap. */
while (i_byte < size_byte)
{
while (pos < XINT (lim))
{
- c = FETCH_BYTE (pos);
+ c = FETCH_BYTE (pos_byte);
MAKE_CHAR_MULTIBYTE (c);
if (fastmap[(int) SYNTAX (c)])
break;
- pos++;
+ pos++, pos_byte++;
UPDATE_SYNTAX_TABLE_FORWARD (pos);
}
- pos_byte = pos;
}
}
else
if (pos > XINT (lim))
while (1)
{
- c = FETCH_BYTE (pos - 1);
+ c = FETCH_BYTE (pos_byte - 1);
MAKE_CHAR_MULTIBYTE (c);
if (! fastmap[(int) SYNTAX (c)])
break;
- pos--;
+ pos--, pos_byte--;
if (pos <= XINT (lim))
break;
UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
}
- pos_byte = pos;
}
}