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))
 		{