diff options
author | Alan Mackenzie <acm@muc.de> | 2020-09-23 08:50:11 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2020-09-23 08:52:34 +0000 |
commit | e4831151c2b746564319018105a17fbde4b553c6 (patch) | |
tree | e0a2e3d05d444e11890f842a4602528d78dcf144 /src/syntax.c | |
parent | 80b0a69b606c9beb738fe797a13d23ca28c4f09d (diff) | |
download | emacs-e4831151c2b746564319018105a17fbde4b553c6.tar.gz emacs-e4831151c2b746564319018105a17fbde4b553c6.tar.bz2 emacs-e4831151c2b746564319018105a17fbde4b553c6.zip |
Handle escaped comment enders correctly in syntax.c, fixing bug #43558
This fixes forward-comment, scan-lists, and parse-partial-sexp.
* src/syntax.c (forw_comment): Detect and skip an escaped comment ender
(e.g. \*/ in C) when comment-end-can-be-escaped is non-nil.
Diffstat (limited to 'src/syntax.c')
-rw-r--r-- | src/syntax.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/syntax.c b/src/syntax.c index e6af8a377bb..066972e6d88 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -2354,6 +2354,13 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, /* We have encountered a nested comment of the same style as the comment sequence which began this comment section. */ nesting++; + if (comment_end_can_be_escaped + && (code == Sescape || code == Scharquote)) + { + inc_both (&from, &from_byte); + UPDATE_SYNTAX_TABLE_FORWARD (from); + if (from == stop) continue; /* Failure */ + } inc_both (&from, &from_byte); UPDATE_SYNTAX_TABLE_FORWARD (from); |