]> git.eshelyaron.com Git - emacs.git/commitdiff
(sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 4 Dec 2006 08:08:06 +0000 (08:08 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 4 Dec 2006 08:08:06 +0000 (08:08 +0000)
anchoring the search.

lisp/ChangeLog
lisp/textmodes/sgml-mode.el

index 86d6f6acfd6f5bfd8780fdd1a29dc981ebf28da0..4d3e30b34526b7dd94186e9d0c7acfa7f77a0fd8 100644 (file)
@@ -1,3 +1,8 @@
+2006-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/sgml-mode.el (sgml-font-lock-keywords-1): Fix pathological
+       O(n^2) regexp-search by anchoring the search.
+
 2006-12-04  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * whitespace.el (whitespace-cleanup-internal): Use current
@@ -31,7 +36,7 @@
        <indicate-empty-lines, case-fold-search>:
        Add "globally" to Help string.
        <case-fold-search>: MESSAGE arg need not say "globally".
-       (menu-bar-edit-menu <paste-from-menu>): Renamed from select-and-paste.
+       (menu-bar-edit-menu <paste-from-menu>): Rename from select-and-paste.
 
 2006-12-03  Liam Healy  <lnp@healy.washington.dc.us>  (tiny change)
 
@@ -45,7 +50,7 @@
        docstring error.
        (allout-yank-processing): Fix depth shift of multiple-topic so yanks
        work again, using allout-ascend's new option.
-       (allout-setup-mode-map): Extracted from allout-mode to initialize
+       (allout-setup-mode-map): Extract from allout-mode to initialize
        allout-mode-map.  Call it on file load, so the mode docstring
        substitutions work even if allout mode has not yet been invoked.
        (allout-mode): Use new allout-setup-mode-map to track any keybinding
 
 2006-11-29  J.D. Smith  <jdsmith@as.arizona.edu>
 
-       * progmodes/idlwave.el (idlwave-auto-fill): Remove
-       paragraph-start let to prevent auto-fill giving up.
+       * progmodes/idlwave.el (idlwave-auto-fill):
+       Remove paragraph-start let to prevent auto-fill giving up.
 
 2006-11-28  Juanma Barranquero  <lekktu@gmail.com>
 
 
 2006-11-27  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
 
-       * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation): Fix
-       interactive spec of the functions getting defined to make them
+       * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation):
+       Fix interactive spec of the functions getting defined to make them
        work as documented.
 
 2006-11-28  Chong Yidong  <cyd@stupidchicken.com>
index 6136d22e4324b5af83d438a8b3d326bda7937817..aa24a724877363ea1dd17b21f1322acccbdf7290 100644 (file)
@@ -265,7 +265,10 @@ Any terminating `>' or `/' is not matched.")
      (1 (if (match-end 2) sgml-namespace-face font-lock-function-name-face))
      (2 font-lock-function-name-face nil t))
     ;; FIXME: this doesn't cover the variables using a default value.
-    (,(concat "\\(" sgml-namespace-re "\\)\\(?::\\("
+    ;; The first shy-group is an important anchor: it prevents an O(n^2)
+    ;; pathological case where we otherwise keep retrying a failing match
+    ;; against a very long word at every possible position within the word.
+    (,(concat "\\(?:^\\|[ \t]\\)\\(" sgml-namespace-re "\\)\\(?::\\("
              sgml-name-re "\\)\\)?=[\"']")
      (1 (if (match-end 2) sgml-namespace-face font-lock-variable-name-face))
      (2 font-lock-variable-name-face nil t))