Subject: Re: bug#22160: 24.5; "M-x browse-url-emacs" on a 404 page

From: Eli Zaretskii <[email-masked]>
Date: Sat, 19 Dec 2015 12:01:43 +0200

> From: Alex Kost <[email-masked]>
> Date: Sun, 13 Dec 2015 13:39:13 +0300
> 
> Hello, I've noticed an unhandled error when I tried the following:
> 
> 1. emacs -Q
> 2. M-x browse-url-emacs RET http://hydra.gnu.org/build/12345
> 
> And the error is:
> 
>     find-file-noselect-1: Wrong type argument: arrayp, nil
> 
> As (file-truename buffer-file-name) fails when buffer-file-name is nil.
> 
> It would be good to have a more "friendly" error, like the one that
> (url-insert-file-contents "http://hydra.gnu.org/build/12345") produces.

browse-url-emacs is not supposed to display error messages for URLs
that don't exist or cannot be accessed.  That function is a fancy way
of visiting a "file buffer" with the HTML source of the URL, so it
should react like "C-x C-f" when the file does not exist.  "C-x C-f"
says "New file" and shows an empty buffer; browse-url-emacs's
equivalent is IMO a buffer with the error returned by the server, in
this case the standard 404 response.

So this is what I did in commit bcf4913 on the emacs-25 branch.  The
previous code in url-insert-file-contents signaled an error when it
received one of the 4xx responses, disregarding the VISIT argument,
which was a mistake (introduced when we fixed bug#16733, where VISIT
is nil).  Now it follows more closely the behavior of
insert-file-contents in that case.

Thanks.