# HG changeset patch # User Chong Yidong # Date 1222287122 0 # Node ID 221d7f943454b0c0c7da69d45d2ef9a36ad3b0a9 # Parent 7a4e70e656a11165688b65fd5dcc2f2ea6d8f3fc (server-buffer-done): Avoid changing the buffer when deleting the client's frame (bug#640). diff -r 7a4e70e656a1 -r 221d7f943454 lisp/server.el --- a/lisp/server.el Wed Sep 24 20:11:47 2008 +0000 +++ b/lisp/server.el Wed Sep 24 20:12:02 2008 +0000 @@ -1084,7 +1084,13 @@ ;; 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