summaryrefslogtreecommitdiff
path: root/lisp/server.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2008-09-24 20:12:02 +0000
committerChong Yidong <cyd@stupidchicken.com>2008-09-24 20:12:02 +0000
commit737e5c834b8b1a7581d9e7adf571dcfb057304cf (patch)
treeaa67d1316e17b0a0a88bf7591dd6dca159c2efd4 /lisp/server.el
parentef1a3179f0aca460c848857bb4d8a64a15ee44c7 (diff)
downloademacs-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.el8
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