From: Alan Mackenzie Date: Fri, 7 Mar 2008 22:34:09 +0000 (+0000) Subject: (c-in-knr-argdecl): Limit number of paren/bracket pairs parsed, to solve X-Git-Tag: emacs-pretest-23.0.90~7396 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6b6481ed7222da77a1fb5c68aa4861477e2d6e44;p=emacs.git (c-in-knr-argdecl): Limit number of paren/bracket pairs parsed, to solve performance problem. --- diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 6ccd41a164c..2007f8ef919 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -6336,7 +6336,8 @@ comment at the start of cc-engine.el for more info." ;; the searchable range. (let* ((macro-start (c-query-macro-start)) (lim (max (or lim (point-min)) (or macro-start (point-min)))) - before-lparen after-rparen) + before-lparen after-rparen + (pp-count-out 20)) ; Max number of paren/brace constructs before we give up (narrow-to-region lim (c-point 'eol)) ;; Search backwards for the defun's argument list. We give up if we @@ -6358,7 +6359,8 @@ comment at the start of cc-engine.el for more info." ;; { (catch 'knr - (while t ; go round one paren/bracket construct each time round. + (while (> pp-count-out 0) ; go back one paren/bracket pair each time. + (setq pp-count-out (1- pp-count-out)) (c-syntactic-skip-backward "^)]}") (cond ((eq (char-before) ?\)) (setq after-rparen (point)))