* net/tramp.el (tramp-check-for-regexp): Search from buffer end,
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 1 Jun 2012 13:23:26 +0000 (15:23 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 1 Jun 2012 13:23:26 +0000 (15:23 +0200)
in order to avoid "Stack overflow in regexp matcher".

lisp/ChangeLog
lisp/net/tramp.el

index 372fc63..cb7aaf4 100644 (file)
@@ -1,3 +1,8 @@
+2012-06-01  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-check-for-regexp): Search from buffer end,
+       in order to avoid "Stack overflow in regexp matcher".
+
 2012-05-31  Glenn Morris  <rgm@gnu.org>
 
        * image.el: For clarity, call imagemagick-register-types at
index beb97c6..be5bfdb 100644 (file)
@@ -3315,8 +3315,14 @@ Erase echoed commands if exists."
                     'buffer-substring-no-properties
                     1 (min (1+ tramp-echo-mark-marker-length) (point-max))))))
       ;; No echo to be handled, now we can look for the regexp.
-      (goto-char (point-min))
-      (re-search-forward regexp nil t))))
+      ;; Sometimes, the buffer is much to huge, and we run into a
+      ;; "Stack overflow in regexp matcher".  For example, directory
+      ;; listings with some thousand files.  Therefore, we look from
+      ;; the end for the last line.  We ignore also superlong lines,
+      ;; like created with "//DIRED//".
+      (goto-char (point-max))
+      (unless (> (- (point) (point-at-bol)) 128)
+       (re-search-backward regexp (point-at-bol) t)))))
 
 (defun tramp-wait-for-regexp (proc timeout regexp)
   "Wait for a REGEXP to appear from process PROC within TIMEOUT seconds.
@@ -3857,9 +3863,6 @@ Only works for Bourne-like shells."
 ;; * Run emerge on two remote files.  Bug is described here:
 ;;   <http://www.mail-archive.com/tramp-devel@nongnu.org/msg01041.html>.
 ;;   (Bug#6850)
-;; * It would be very useful if it were possible to load or save a
-;;   buffer using Tramp in a non-blocking way so that use of Emacs on
-;;   other buffers could continue.  (Bug#9617)
 
 ;;; tramp.el ends here