]> code.delx.au - gnu-emacs/commitdiff
(server-kill-buffer): Prevent infinite recursion.
authorRichard M. Stallman <rms@gnu.org>
Sat, 31 May 1997 00:31:40 +0000 (00:31 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 31 May 1997 00:31:40 +0000 (00:31 +0000)
(server-kill-buffer-running): New variable.

lisp/server.el

index 3fb4b039e8feb0f43bad4793d794a490ea618c2f..49fd8172c40b58af5743afa2a2134c4b390fa88a 100644 (file)
@@ -385,11 +385,18 @@ or nil.  KILLED is t if we killed the BUFFER (because it was a temp file)."
 
 (add-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
 
+(defvar server-kill-buffer-running nil
+  "Non-nil while `server-kill-buffer' is running.")
+
 ;; When a buffer is killed, inform the clients.
 (add-hook 'kill-buffer-hook 'server-kill-buffer)
 (defun server-kill-buffer ()
-  (when server-process
-    (server-buffer-done (current-buffer) t)))
+  ;; Prevent infinite recursion if user has made server-done-hook
+  ;; call kill-buffer.
+  (or server-kill-buffer-running
+      (let ((server-kill-buffer-running t))
+       (when server-process
+         (server-buffer-done (current-buffer) t)))))
 \f
 (defun server-edit (&optional arg)
   "Switch to next server editing buffer; say \"Done\" for current buffer.