changeset 54849:3f107190e71f

(scan_lists): Simplify backward string scan. Fix off-by-one boundary check for string and comment fences.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 13 Apr 2004 21:45:13 +0000
parents 679fb5bfb814
children b51ae0b3fd1b
files src/syntax.c
diffstat 1 files changed, 5 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/syntax.c	Tue Apr 13 21:31:23 2004 +0000
+++ b/src/syntax.c	Tue Apr 13 21:45:13 2004 +0000
@@ -2398,8 +2398,8 @@
 	    case Sstring_fence:
 	      while (1)
 		{
+		  if (from == stop) goto lose;
 		  DEC_BOTH (from, from_byte);
-		  if (from == stop) goto lose;
 		  UPDATE_SYNTAX_TABLE_BACKWARD (from);
 		  if (!char_quoted (from, from_byte)
 		      && (c = FETCH_CHAR (from_byte),
@@ -2414,19 +2414,13 @@
 	      while (1)
 		{
 		  if (from == stop) goto lose;
-		  temp_pos = from_byte;
-		  if (! NILP (current_buffer->enable_multibyte_characters))
-		    DEC_POS (temp_pos);
-		  else
-		    temp_pos--;
-		  UPDATE_SYNTAX_TABLE_BACKWARD (from - 1);
-		  if (!char_quoted (from - 1, temp_pos)
-		      && stringterm == (c = FETCH_CHAR (temp_pos))
+		  DEC_BOTH (from, from_byte);
+		  UPDATE_SYNTAX_TABLE_BACKWARD (from);
+		  if (!char_quoted (from, from_byte)
+		      && stringterm == (c = FETCH_CHAR (from_byte))
 		      && SYNTAX_WITH_MULTIBYTE_CHECK (c) == Sstring)
 		    break;
-		  DEC_BOTH (from, from_byte);
 		}
-	      DEC_BOTH (from, from_byte);
 	      if (!depth && sexpflag) goto done2;
 	      break;
 	    default: