From: Chong Yidong Date: Wed, 24 Sep 2008 20:12:02 +0000 (+0000) Subject: (server-buffer-done): Avoid changing the buffer when deleting the X-Git-Tag: emacs-pretest-23.0.90~2780 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=737e5c834b8b1a7581d9e7adf571dcfb057304cf;p=emacs.git (server-buffer-done): Avoid changing the buffer when deleting the client's frame (bug#640). --- diff --git a/lisp/server.el b/lisp/server.el index 0a8df5d9f47..8dfa6d19732 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1084,7 +1084,13 @@ FOR-KILLING if non-nil indicates that we are called from `kill-buffer'." ;; tell it that it is done, and forget it entirely. (unless buffers (server-log "Close" proc) - (server-delete-client proc))))) + (if for-killing + ;; `server-delete-client' might delete the client's + ;; frames, which might change the current buffer. We + ;; don't want that (bug#640). + (save-current-buffer + (server-delete-client proc)) + (server-delete-client proc)))))) (when (and (bufferp buffer) (buffer-name buffer)) ;; We may or may not kill this buffer; ;; if we do, do not call server-buffer-done recursively