diff src/syntax.c @ 90851:31beec9ee600

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 751-770) - Update from CVS - Merge from emacs--rel--22 - Update from CVS: lisp/textmodes/sgml-mode.el: Revert last change. - Merge from gnus--rel--5.10 * emacs--rel--22 (patch 18-25) * gnus--rel--5.10 (patch 222-223) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-208
author Miles Bader <miles@gnu.org>
date Thu, 24 May 2007 21:31:10 +0000
parents c035421fe210 e294a8067c33
children f55f9811f5d7
line wrap: on
line diff
--- a/src/syntax.c	Tue May 22 15:26:28 2007 +0000
+++ b/src/syntax.c	Thu May 24 21:31:10 2007 +0000
@@ -1299,20 +1299,20 @@
 	  script = CHAR_TABLE_REF (Vchar_script_table, ch1);
 	  while (1)
 	    {
-	      int temp_byte;
-
 	      if (from == beg)
 		break;
-	      temp_byte = dec_bytepos (from_byte);
+	      DEC_BOTH (from, from_byte);
 	      UPDATE_SYNTAX_TABLE_BACKWARD (from);
-	      ch0 = FETCH_CHAR_AS_MULTIBYTE (temp_byte);
+	      ch0 = FETCH_CHAR_AS_MULTIBYTE (from_byte);
 	      code = SYNTAX (ch0);
 	      if ((code != Sword
 		   && (! words_include_escapes
 		       || (code != Sescape && code != Scharquote)))
 		  || ! EQ (CHAR_TABLE_REF (Vchar_script_table, ch0), script))
-		break;
-	      DEC_BOTH (from, from_byte);
+		{
+		  INC_BOTH (from, from_byte);
+		  break;
+		}
 	      ch1 = ch0;
 	    }
 	}
@@ -2031,13 +2031,13 @@
 		    p = GPT_ADDR;
 		    stop = endp;
 		  }
+		UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
 		prev_p = p;
 		while (--p >= stop && ! CHAR_HEAD_P (*p));
 		c = STRING_CHAR (p, MAX_MULTIBYTE_LENGTH);
 		if (! fastmap[(int) SYNTAX (c)])
 		  break;
 		pos--, pos_byte -= prev_p - p;
-		UPDATE_SYNTAX_TABLE_BACKWARD (pos);
 	      }
 	  }
 	else