mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-23 07:19:15 +00:00
Fix a "wrong side of point" error in CC Mode. Fixes bug #28850.
The cause was a scanning over a bracket pair taking us beyond the supplied LIMIT parameter in c-forward-declarator. * lisp/progmodes/cc-engine.el (c-forward-declarator): Add three checks (< (point) limit) whilst dealing with tokens after the declared identifier. * lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Don't supply a LIMIT argument to `c-forward-declarator' (twice), since we want to fontify up till the end of a declarator, not an arbitrary jit-lock chunk end.
This commit is contained in:
parent
57ca409111
commit
46540a1c7a
@ -8112,12 +8112,14 @@ comment at the start of cc-engine.el for more info."
|
||||
;; initializing brace lists.
|
||||
(let (found)
|
||||
(while
|
||||
(and (progn
|
||||
(and (< (point) limit)
|
||||
(progn
|
||||
;; In the next loop, we keep searching forward whilst
|
||||
;; we find ":"s which aren't single colons inside C++
|
||||
;; "for" statements.
|
||||
(while
|
||||
(and
|
||||
(< (point) limit)
|
||||
(setq found
|
||||
(c-syntactic-re-search-forward
|
||||
"[;:,]\\|\\s)\\|\\(=\\|\\s(\\)"
|
||||
@ -8139,7 +8141,7 @@ comment at the start of cc-engine.el for more info."
|
||||
(c-go-up-list-forward))
|
||||
(setq brackets-after-id t))
|
||||
(when found (backward-char))
|
||||
t))
|
||||
(<= (point) limit)))
|
||||
(list id-start id-end brackets-after-id (match-beginning 1) decorated)
|
||||
|
||||
(goto-char here)
|
||||
|
@ -1062,7 +1062,7 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
;; The following `while' fontifies a single declarator id each time round.
|
||||
;; It loops only when LIST is non-nil.
|
||||
(while
|
||||
(and pos (setq decl-res (c-forward-declarator limit)))
|
||||
(and pos (setq decl-res (c-forward-declarator)))
|
||||
(setq next-pos (point)
|
||||
id-start (car decl-res)
|
||||
id-face (if (and (eq (char-after) ?\()
|
||||
@ -1091,7 +1091,7 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
(throw 'is-function nil))
|
||||
((not (eq got-type 'maybe))
|
||||
(throw 'is-function t)))
|
||||
(c-forward-declarator limit t)
|
||||
(c-forward-declarator nil t)
|
||||
(eq (char-after) ?,))
|
||||
(forward-char)
|
||||
(c-forward-syntactic-ws))
|
||||
|
Loading…
Reference in New Issue
Block a user