Mercurial > emacs
changeset 89103:c4712a200dcb
(skip_chars): Fix previous change.
(skip_syntaxes): Fix previous change.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 13 Sep 2002 11:18:35 +0000 |
parents | 1365cbd31156 |
children | 5434ecb9fbd5 |
files | src/syntax.c |
diffstat | 1 files changed, 18 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/src/syntax.c Thu Sep 12 08:37:25 2002 +0000 +++ b/src/syntax.c Fri Sep 13 11:18:35 2002 +0000 @@ -1420,6 +1420,9 @@ 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] == '^') @@ -1433,9 +1436,6 @@ 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; @@ -1662,9 +1662,8 @@ } 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 @@ -1693,9 +1692,8 @@ } 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--; } } @@ -1738,6 +1736,13 @@ 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] == '^') @@ -1745,12 +1750,6 @@ 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) @@ -1791,14 +1790,13 @@ { 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 @@ -1826,16 +1824,15 @@ 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; } }