]> git.eshelyaron.com Git - emacs.git/commitdiff
(c-in-knr-argdecl): Limit number of paren/bracket pairs parsed, to solve
authorAlan Mackenzie <acm@muc.de>
Tue, 1 Apr 2008 21:41:21 +0000 (21:41 +0000)
committerAlan Mackenzie <acm@muc.de>
Tue, 1 Apr 2008 21:41:21 +0000 (21:41 +0000)
performance problem.

lisp/progmodes/cc-engine.el

index acc876d576a44132dbce5d3732f6bc15157c5b56..0282b156bb0b553a8d99bfbdbb93c50c706f10ae 100644 (file)
@@ -6333,7 +6333,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
@@ -6355,7 +6356,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)))