]> git.eshelyaron.com Git - emacs.git/commitdiff
(skip_chars): Fix previous change.
authorKenichi Handa <handa@m17n.org>
Fri, 13 Sep 2002 11:22:21 +0000 (11:22 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 13 Sep 2002 11:22:21 +0000 (11:22 +0000)
(skip_syntaxes): Fix previous change.

src/ChangeLog
src/syntax.c

index c01ca49fa2476a1207bbf43c1139e40a9c993aca..f72e6601ebf9648fb6fafbb57ba1eda0931a63a0 100644 (file)
@@ -1,3 +1,8 @@
+2002-09-13  Kenichi Handa  <handa@etl.go.jp>
+
+       * syntax.c (skip_chars): Fix previous change.
+       (skip_syntaxes): Fix previous change.
+
 2002-09-06  Dave Love  <fx@gnu.org>
 
        * config.in: Restore it.
index f4b5270ee9f6d2486263f80146b589942cb55797..debe8c8a9d883b01631411f96130f9a359559963 100644 (file)
@@ -1420,6 +1420,9 @@ skip_chars (forwardp, string, lim)
   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 @@ skip_chars (forwardp, string, lim)
      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 @@ skip_chars (forwardp, string, lim)
            }
        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 @@ skip_chars (forwardp, string, lim)
            }
        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 @@ skip_syntaxes (forwardp, string, lim)
 
   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 @@ skip_syntaxes (forwardp, string, lim)
       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 @@ skip_syntaxes (forwardp, string, lim)
          {
            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 @@ skip_syntaxes (forwardp, string, lim)
            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;
          }
       }