aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2004-04-13 21:45:13 +0000
committerStefan Monnier2004-04-13 21:45:13 +0000
commitd0abdf7e83b680da728b460b11f7bd3ea366700a (patch)
treebe207658dc1ec925f119e73012570823ed8c64ee /src
parentcb9d4a9f656c51cf15805f3746ea86a6d07c059d (diff)
downloademacs-d0abdf7e83b680da728b460b11f7bd3ea366700a.tar.gz
emacs-d0abdf7e83b680da728b460b11f7bd3ea366700a.zip
(scan_lists): Simplify backward string scan.
Fix off-by-one boundary check for string and comment fences.
Diffstat (limited to 'src')
-rw-r--r--src/syntax.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/syntax.c b/src/syntax.c
index 30fc94267cd..72f7a5c5209 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -2398,8 +2398,8 @@ scan_lists (from, count, depth, sexpflag)
2398 case Sstring_fence: 2398 case Sstring_fence:
2399 while (1) 2399 while (1)
2400 { 2400 {
2401 DEC_BOTH (from, from_byte);
2402 if (from == stop) goto lose; 2401 if (from == stop) goto lose;
2402 DEC_BOTH (from, from_byte);
2403 UPDATE_SYNTAX_TABLE_BACKWARD (from); 2403 UPDATE_SYNTAX_TABLE_BACKWARD (from);
2404 if (!char_quoted (from, from_byte) 2404 if (!char_quoted (from, from_byte)
2405 && (c = FETCH_CHAR (from_byte), 2405 && (c = FETCH_CHAR (from_byte),
@@ -2414,19 +2414,13 @@ scan_lists (from, count, depth, sexpflag)
2414 while (1) 2414 while (1)
2415 { 2415 {
2416 if (from == stop) goto lose; 2416 if (from == stop) goto lose;
2417 temp_pos = from_byte; 2417 DEC_BOTH (from, from_byte);
2418 if (! NILP (current_buffer->enable_multibyte_characters)) 2418 UPDATE_SYNTAX_TABLE_BACKWARD (from);
2419 DEC_POS (temp_pos); 2419 if (!char_quoted (from, from_byte)
2420 else 2420 && stringterm == (c = FETCH_CHAR (from_byte))
2421 temp_pos--;
2422 UPDATE_SYNTAX_TABLE_BACKWARD (from - 1);
2423 if (!char_quoted (from - 1, temp_pos)
2424 && stringterm == (c = FETCH_CHAR (temp_pos))
2425 && SYNTAX_WITH_MULTIBYTE_CHECK (c) == Sstring) 2421 && SYNTAX_WITH_MULTIBYTE_CHECK (c) == Sstring)
2426 break; 2422 break;
2427 DEC_BOTH (from, from_byte);
2428 } 2423 }
2429 DEC_BOTH (from, from_byte);
2430 if (!depth && sexpflag) goto done2; 2424 if (!depth && sexpflag) goto done2;
2431 break; 2425 break;
2432 default: 2426 default: