CC Mode: Fix calculation of c-parse-state when there're macros with braces

This fixes bug #46951.

* lisp/progmodes/cc-engine.el (c-append-lower-brace-pair-to-state-cache):
Ensure the starting point for backward scanning is not within a macro which
doesn't contain HERE.
This commit is contained in:
Alan Mackenzie 2021-03-06 15:22:25 +00:00
parent b8e3f338a6
commit 1d43c1854a

View file

@ -3793,12 +3793,14 @@ mhtml-mode."
(point)))
(bra ; Position of "{".
;; Don't start scanning in the middle of a CPP construct unless
;; it contains HERE - these constructs, in Emacs, are "commented
;; out" with category properties.
(if (eq (c-get-char-property macro-start-or-from 'category)
'c-cpp-delimiter)
macro-start-or-from
from))
;; it contains HERE.
(if (and (not (eq macro-start-or-from from))
(< macro-start-or-from here) ; Might not be needed.
(progn (goto-char macro-start-or-from)
(c-end-of-macro)
(>= (point) here)))
from
macro-start-or-from))
ce) ; Position of "}"
(or upper-lim (setq upper-lim from))