]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix a "wrong side of point" error in CC Mode. Fixes bug #28850.
authorAlan Mackenzie <acm@muc.de>
Wed, 25 Oct 2017 18:14:00 +0000 (18:14 +0000)
committerAlan Mackenzie <acm@muc.de>
Wed, 25 Oct 2017 18:14:00 +0000 (18:14 +0000)
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.

lisp/progmodes/cc-engine.el
lisp/progmodes/cc-fonts.el

index c506294c5a0d6d60bae2019420a9cd119fb45675..457f95f2ca3fd8337538a8b22a3cc6afea23e9f0 100644 (file)
@@ -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)
index acdb1ad133440b75452702352fb8ae7bc90c9026..a2ac2a32535047be49fc2c5f4b9767569e1e12da 100644 (file)
@@ -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))