Mercurial > emacs
changeset 22130:b25abff012fd
(skip_chars): Fix previous change.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 18 May 1998 04:53:37 +0000 |
parents | d76e72401a73 |
children | ef5e2e61b4ea |
files | src/syntax.c |
diffstat | 1 files changed, 10 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/syntax.c Mon May 18 04:34:54 1998 +0000 +++ b/src/syntax.c Mon May 18 04:53:37 1998 +0000 @@ -1254,6 +1254,7 @@ register int i, i_byte; int multibyte = !NILP (current_buffer->enable_multibyte_characters); int string_multibyte = STRING_MULTIBYTE (string); + int size_byte = STRING_BYTES (XSTRING (string)); CHECK_STRING (string, 0); char_ranges = (int *) alloca (XSTRING (string)->size * (sizeof (int)) * 2); @@ -1273,7 +1274,7 @@ i = 0, i_byte = 0; - if (i < XSTRING (string)->size + if (i_byte < size_byte && XSTRING (string)->data[0] == '^') { negate = 1; i++, i_byte++; @@ -1283,7 +1284,7 @@ If syntaxp, each character counts as itself. Otherwise, handle backslashes and ranges specially. */ - while (i < XSTRING (string)->size) + while (i_byte < size_byte) { int c_leading_code; @@ -1293,7 +1294,7 @@ FETCH_STRING_CHAR_ADVANCE (c, string, i, i_byte); } else - c = c_leading_code = XSTRING (string)->data[i++]; + c = c_leading_code = XSTRING (string)->data[i_byte++]; /* Convert multibyteness between what the string has and what the buffer has. */ @@ -1308,18 +1309,18 @@ { if (c == '\\') { - if (i == XSTRING (string)->size) + if (i_byte == size_byte) break; if (string_multibyte) { - c_leading_code = XSTRING (string)->data[i]; + c_leading_code = XSTRING (string)->data[i_byte]; FETCH_STRING_CHAR_ADVANCE (c, string, i, i_byte); } else - c = c_leading_code = XSTRING (string)->data[i++]; + c = c_leading_code = XSTRING (string)->data[i_byte++]; } - if (i < XSTRING (string)->size + if (i_byte < size_byte && XSTRING (string)->data[i_byte] == '-') { unsigned int c2, c2_leading_code; @@ -1327,7 +1328,7 @@ /* Skip over the dash. */ i++, i_byte++; - if (i == XSTRING (string)->size) + if (i_byte == size_byte) break; /* Get the end of the range. */ @@ -1337,7 +1338,7 @@ FETCH_STRING_CHAR_ADVANCE (c2, string, i, i_byte); } else - c2 = XSTRING (string)->data[i++]; + c2 = XSTRING (string)->data[i_byte++]; if (SINGLE_BYTE_CHAR_P (c)) {