(wl-highlight-signature-search): Don't use re-search-backward for a long
authoryamaoka <yamaoka>
Thu, 19 Feb 2004 05:52:36 +0000 (05:52 +0000)
committeryamaoka <yamaoka>
Thu, 19 Feb 2004 05:52:36 +0000 (05:52 +0000)
 word since it is possible to crash XEmacs because of a bug.

wl/ChangeLog
wl/wl-highlight.el

index a0d86ce..d391256 100644 (file)
@@ -1,3 +1,9 @@
+2004-02-19  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * wl-highlight.el (wl-highlight-signature-search): Don't use
+       re-search-backward for a long word since it is possible to crash
+       XEmacs because of a bug.
+
 2004-02-15  Tetsurou Okazaki  <okazaki@be.to>
 
        * wl-message.el (wl-message-buffer-prefetch-p): Change `defsubst' to `defun'.
index f03fe3b..2796e8d 100644 (file)
@@ -1078,17 +1078,25 @@ Returns start point of signature."
     (goto-char end)
     (or
      ;; look for legal signature separator (check at first for fasten)
-     (re-search-backward "\n-- \n" beg t)
+     (search-backward "\n-- \n" beg t)
 
      ;; look for dual separator
-     (save-excursion
-       (and
-       (re-search-backward "^[^A-Za-z0-9> \t\n]+ *$" beg t)
-       (> (- (match-end 0) (match-beginning 0)) 10);; "10" is a magic number.
-       (re-search-backward
-        (concat "^"
-                (regexp-quote (buffer-substring (match-beginning 0) (match-end 0)))
-                "$") beg t)))
+     (let ((pt (point))
+          separator)
+       (prog1
+          (and (re-search-backward "^[^A-Za-z0-9> \t\n]+ *$" beg t)
+               ;; `10' is a magic number.
+               (> (- (match-end 0) (match-beginning 0)) 10)
+               (setq separator (buffer-substring (match-beginning 0)
+                                                 (match-end 0)))
+               ;; We should not use `re-search-backward' for a long word
+               ;; since it is possible to crash XEmacs because of a bug.
+               (if (search-backward (concat "\n" separator "\n") beg t)
+                   (1+ (point))
+                 (and (search-backward (concat separator "\n") beg t)
+                      (bolp)
+                      (point))))
+        (goto-char pt)))
 
      ;; look for user specified signature-separator
      (if (stringp wl-highlight-signature-separator)