changeset 87380:cd847b2ba99f

(server-save-buffers-kill-terminal): Check the `proc' is indeed a process.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 23 Dec 2007 22:46:07 +0000
parents 7fb15af635f4
children 3acb39b0ac26
files lisp/ChangeLog lisp/server.el
diffstat 2 files changed, 18 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Dec 23 21:46:25 2007 +0000
+++ b/lisp/ChangeLog	Sun Dec 23 22:46:07 2007 +0000
@@ -1,3 +1,8 @@
+2007-12-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* server.el (server-save-buffers-kill-terminal): Check the `proc' is
+	indeed a process.
+
 2007-12-23  Richard Stallman  <rms@gnu.org>
 
 	* simple.el (region-active-p): New function.
--- a/lisp/server.el	Sun Dec 23 21:46:25 2007 +0000
+++ b/lisp/server.el	Sun Dec 23 22:46:07 2007 +0000
@@ -1260,21 +1260,25 @@
 
 ;;;###autoload
 (defun server-save-buffers-kill-terminal (proc &optional arg)
+  ;; Called from save-buffers-kill-terminal in files.el.
   "Offer to save each buffer, then kill PROC.
 
 With prefix arg, silently save all file-visiting buffers, then kill.
 
 If emacsclient was started with a list of filenames to edit, then
 only these files will be asked to be saved."
-  (let ((buffers (process-get proc 'buffers)))
-    ;; If client is bufferless, emulate a normal Emacs session
-    ;; exit and offer to save all buffers.  Otherwise, offer to
-    ;; save only the buffers belonging to the client.
-    (save-some-buffers arg
-		       (if buffers
-			   (lambda () (memq (current-buffer) buffers))
-			 t))
-    (server-delete-client proc)))
+  ;; save-buffers-kill-terminal occasionally calls us with proc set
+  ;; to `nowait' (comes from the value of the `client' frame parameter).
+  (when (processp proc)
+    (let ((buffers (process-get proc 'buffers)))
+      ;; If client is bufferless, emulate a normal Emacs session
+      ;; exit and offer to save all buffers.  Otherwise, offer to
+      ;; save only the buffers belonging to the client.
+      (save-some-buffers arg
+                         (if buffers
+                             (lambda () (memq (current-buffer) buffers))
+                           t))
+      (server-delete-client proc))))
 
 (define-key ctl-x-map "#" 'server-edit)