diff options
| author | Chong Yidong | 2008-09-24 20:12:02 +0000 |
|---|---|---|
| committer | Chong Yidong | 2008-09-24 20:12:02 +0000 |
| commit | 737e5c834b8b1a7581d9e7adf571dcfb057304cf (patch) | |
| tree | aa67d1316e17b0a0a88bf7591dd6dca159c2efd4 | |
| parent | ef1a3179f0aca460c848857bb4d8a64a15ee44c7 (diff) | |
| download | emacs-737e5c834b8b1a7581d9e7adf571dcfb057304cf.tar.gz emacs-737e5c834b8b1a7581d9e7adf571dcfb057304cf.zip | |
(server-buffer-done): Avoid changing the buffer when deleting the
client's frame (bug#640).
| -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'." | |||
| 1084 | ;; tell it that it is done, and forget it entirely. | 1084 | ;; tell it that it is done, and forget it entirely. |
| 1085 | (unless buffers | 1085 | (unless buffers |
| 1086 | (server-log "Close" proc) | 1086 | (server-log "Close" proc) |
| 1087 | (server-delete-client proc))))) | 1087 | (if for-killing |
| 1088 | ;; `server-delete-client' might delete the client's | ||
| 1089 | ;; frames, which might change the current buffer. We | ||
| 1090 | ;; don't want that (bug#640). | ||
| 1091 | (save-current-buffer | ||
| 1092 | (server-delete-client proc)) | ||
| 1093 | (server-delete-client proc)))))) | ||
| 1088 | (when (and (bufferp buffer) (buffer-name buffer)) | 1094 | (when (and (bufferp buffer) (buffer-name buffer)) |
| 1089 | ;; We may or may not kill this buffer; | 1095 | ;; We may or may not kill this buffer; |
| 1090 | ;; if we do, do not call server-buffer-done recursively | 1096 | ;; if we do, do not call server-buffer-done recursively |