# HG changeset patch # User Stefan Monnier # Date 1036880402 0 # Node ID 303d917c08c3c02420acbf140fa35fbc56cdd441 # Parent 13ff2508090c149cb936adf1323db8148220da92 (scan_sexps_forward): Update syntax table before reading a char rather than after so we don't update the table past eob. diff -r 13ff2508090c -r 303d917c08c3 src/syntax.c --- a/src/syntax.c Sat Nov 09 12:56:31 2002 +0000 +++ b/src/syntax.c Sat Nov 09 22:20:02 2002 +0000 @@ -2504,10 +2504,10 @@ #define INC_FROM \ do { prev_from = from; \ prev_from_byte = from_byte; \ + UPDATE_SYNTAX_TABLE_FORWARD (prev_from); \ prev_from_syntax \ = SYNTAX_WITH_FLAGS (FETCH_CHAR (prev_from_byte)); \ INC_BOTH (from, from_byte); \ - UPDATE_SYNTAX_TABLE_FORWARD (from); \ } while (0) immediate_quit = 1; @@ -2580,7 +2580,6 @@ SETUP_SYNTAX_TABLE (prev_from, 1); prev_from_syntax = SYNTAX_WITH_FLAGS (FETCH_CHAR (prev_from_byte)); - UPDATE_SYNTAX_TABLE_FORWARD (from); /* Enter the loop at a place appropriate for initial state. */ @@ -2596,12 +2595,6 @@ else if (start_quoted) goto startquoted; -#if 0 /* This seems to be redundant with the identical code above. */ - SETUP_SYNTAX_TABLE (prev_from, 1); - prev_from_syntax = SYNTAX_WITH_FLAGS (FETCH_CHAR (prev_from_byte)); - UPDATE_SYNTAX_TABLE_FORWARD (from); -#endif - while (from < end) { INC_FROM; @@ -2627,6 +2620,7 @@ else if (from < end) if (SYNTAX_FLAGS_COMSTART_FIRST (prev_from_syntax)) if (c1 = FETCH_CHAR (from_byte), + UPDATE_SYNTAX_TABLE_FORWARD (from_byte), SYNTAX_COMSTART_SECOND (c1)) /* Duplicate code to avoid a complex if-expression which causes trouble for the SGI compiler. */ @@ -2634,7 +2628,7 @@ /* Record the comment style we have entered so that only the comment-end sequence of the same style actually terminates the comment section. */ - state.comstyle = SYNTAX_COMMENT_STYLE (FETCH_CHAR (from_byte)); + state.comstyle = SYNTAX_COMMENT_STYLE (c1); comnested = SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax); comnested = comnested || SYNTAX_COMMENT_NESTED (c1); state.incomment = comnested ? 1 : -1;