From 1d43c1854a5cd8305200f6cff8ff8e80cb2b4b8a Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sat, 6 Mar 2021 15:22:25 +0000 Subject: [PATCH] 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. --- lisp/progmodes/cc-engine.el | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 5a8b2f4f906..b7ad02cf0cd 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -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)) -- 2.39.2