Subject: bug#17772: [PATCH] Dangling channels' buffer

From: Daimrod <[email-masked]>
Date: Sat, 14 Jun 2014 10:04:04 +0900

Stefan Monnier <[email-masked]> writes:

>> server process when it existed, or nil. However, since a78d87e7ed it
>> raises an error.
>
> Please avoid using Git references until we actually switch to Git.
> Use dates, for example, instead.

Ok, I'll keep this in mind.

>> This is a problem if the user kills the server buffer before it kills
>> the channels' buffer because it is not possible to kill them after that.
>> (The function `rcirc-clean-up-buffer' is called via `kill-buffer-hook'
>> and it calls `rcirc-buffer-process'.)
>
> Your patch doesn't look bad, but I wonder if a better option wouldn't be
> to try and better preserve the previous behavior.  E.g. with the
> patch below.
>
> WDYT?

Fine for me, but you don't need the `or'.

> === modified file 'lisp/net/rcirc.el'
> --- lisp/net/rcirc.el	2014-05-12 16:06:13 +0000
> +++ lisp/net/rcirc.el	2014-06-13 18:34:01 +0000
> @@ -803,9 +804,8 @@
>    "Return the process associated with channel BUFFER.
>  With no argument or nil as argument, use the current buffer."
>    (let ((buffer (or buffer (if (buffer-live-p rcirc-server-buffer)
> -			       rcirc-server-buffer
> -			     (error "Server buffer deleted")))))
> -    (or (with-current-buffer buffer rcirc-process)
> +			       rcirc-server-buffer))))

+    (if buffer
+        (with-current-buffer buffer rcirc-process)
+      rcirc-process)))

> +    (or (if buffer (with-current-buffer buffer rcirc-process))
>  	rcirc-process)))
>  
>  (defun rcirc-server-name (process)
>

-- 
Daimrod/Greg