diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2008-09-24 20:12:02 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2008-09-24 20:12:02 +0000 |
commit | 737e5c834b8b1a7581d9e7adf571dcfb057304cf (patch) | |
tree | aa67d1316e17b0a0a88bf7591dd6dca159c2efd4 /lisp/server.el | |
parent | ef1a3179f0aca460c848857bb4d8a64a15ee44c7 (diff) | |
download | emacs-737e5c834b8b1a7581d9e7adf571dcfb057304cf.tar.gz |
(server-buffer-done): Avoid changing the buffer when deleting the
client's frame (bug#640).
Diffstat (limited to 'lisp/server.el')
-rw-r--r-- | lisp/server.el | 8 |
1 files changed, 7 insertions, 1 deletions
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 |