Limit recursion depth of c-forward-<>-arglist-recur (Bug#7722).

* progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit
to the recursion depth.
This commit is contained in:
Chong Yidong 2011-01-26 19:51:41 -05:00
parent 37d1c45d60
commit af7c5700ca
2 changed files with 17 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2011-01-27 Chong Yidong <cyd@stupidchicken.com>
* progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit
to the recursion depth (Bug#7722).
2011-01-26 Roy Liu <carsomyr@gmail.com> (tiny change)
* term/ns-win.el (ns-find-file): Expand ns-input-file with

View file

@ -4393,6 +4393,8 @@ comment at the start of cc-engine.el for more info."
(goto-char safe-pos)
t)))
(defvar c-forward-<>-arglist-recur-depth)
(defun c-forward-<>-arglist (all-types)
;; The point is assumed to be at a "<". Try to treat it as the open
;; paren of an angle bracket arglist and move forward to the
@ -4418,7 +4420,8 @@ comment at the start of cc-engine.el for more info."
;; If `c-record-type-identifiers' is set then activate
;; recording of any found types that constitute an argument in
;; the arglist.
(c-record-found-types (if c-record-type-identifiers t)))
(c-record-found-types (if c-record-type-identifiers t))
(c-forward-<>-arglist-recur--depth 0))
(if (catch 'angle-bracket-arglist-escape
(setq c-record-found-types
(c-forward-<>-arglist-recur all-types)))
@ -4434,6 +4437,14 @@ comment at the start of cc-engine.el for more info."
nil)))
(defun c-forward-<>-arglist-recur (all-types)
;; Temporary workaround for Bug#7722.
(when (boundp 'c-forward-<>-arglist-recur--depth)
(if (> c-forward-<>-arglist-recur--depth 200)
(error "Max recursion depth reached in <> arglist")
(setq c-forward-<>-arglist-recur--depth
(1+ c-forward-<>-arglist-recur--depth))))
;; Recursive part of `c-forward-<>-arglist'.
;;
;; This function might do hidden buffer changes.