From 419275721fa0d19443bfcafa207f2e611a5793a9 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 10 Apr 2002 18:19:44 +0000 Subject: [PATCH] (fill-context-prefix): Match the two prefixes differently to avoid pathological exponential-time case. --- lisp/textmodes/fill.el | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 34fa1f544bb..e4545021cc2 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el @@ -237,18 +237,14 @@ act as a paragraph-separator." ;; just use it (this subsumes the 2 previous checks). ;; Used when first line is `/* ...' and second-line is ;; ` * ...'. - (save-excursion - (goto-char firstline) - (looking-at - (apply 'concat - (mapcar (lambda (c) - (if (memq c '(?\t ?\ )) - ;; The number of chars might not - ;; match up if there's a mix of - ;; tabs and spaces. - "\\([ \t]*\\|.\\)" - (regexp-quote (string c)))) - second-line-prefix)))) + (string-match + (concat "\\`" + (mapconcat + (lambda (c) (regexp-quote (string c))) + (replace-regexp-in-string "[ \t]+" "" first-line-prefix) + "?") + "?\\'") + (replace-regexp-in-string "[ \t]+" "" second-line-prefix)) second-line-prefix ;; Use the longest common substring of both prefixes, -- 2.39.2