emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 5c3534f: * lisp/window.el (window--process-window


From: Glenn Morris
Subject: [Emacs-diffs] emacs-25 5c3534f: * lisp/window.el (window--process-window-list): No-op if no processes.
Date: Wed, 27 Apr 2016 23:21:52 +0000

branch: emacs-25
commit 5c3534ffdcce41b1aab7bd158cf07224446caa9d
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    * lisp/window.el (window--process-window-list): No-op if no processes.
    
    This avoids an issue with save-selected-window (from walk-windows)
    failing if frame.el is not loaded, eg if the terminal is resized
    during startup of a -nw CANNOT_DUMP build.  (Bug#23369).
---
 lisp/window.el |   37 +++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/lisp/window.el b/lisp/window.el
index 0d7dbd8..d9ac0e6 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -8520,24 +8520,25 @@ A window is associated with a process if that window is
 displaying that processes's buffer."
   (let ((processes (process-list))
         (process-windows nil))
-    (walk-windows
-     (lambda (window)
-       (let ((buffer (window-buffer window))
-             (iter processes))
-         (while (let ((process (car iter)))
-                  (if (and (process-live-p process)
-                           (eq buffer (process-buffer process)))
-                      (let ((procwin (assq process process-windows)))
-                        ;; Add this window to the list of windows
-                        ;; displaying process.
-                        (if procwin
-                            (push window (cdr procwin))
-                          (push (list process window) process-windows))
-                        ;; We found our process for this window, so
-                        ;; stop iterating over the process list.
-                        nil)
-                    (setf iter (cdr iter)))))))
-     1 t)
+    (if processes
+        (walk-windows
+         (lambda (window)
+           (let ((buffer (window-buffer window))
+                 (iter processes))
+             (while (let ((process (car iter)))
+                      (if (and (process-live-p process)
+                               (eq buffer (process-buffer process)))
+                          (let ((procwin (assq process process-windows)))
+                            ;; Add this window to the list of windows
+                            ;; displaying process.
+                            (if procwin
+                                (push window (cdr procwin))
+                              (push (list process window) process-windows))
+                            ;; We found our process for this window, so
+                            ;; stop iterating over the process list.
+                            nil)
+                        (setf iter (cdr iter)))))))
+         1 t))
     process-windows))
 
 (defun window--adjust-process-windows ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]