Subject: Re: bug#48500: 28.0.50; url-retrieve-synchronously exits abnormally due to pending keyboard input from terminal

From: Eli Zaretskii <[email-masked]>
Date: Tue, 18 May 2021 18:05:52 +0300

> Date: Tue, 18 May 2021 18:35:05 +1200
> From: Shane Mulligan <[email-masked]>
> 
> 
> `url-retrieve-synchronously` exits abnormally due to pending keyboard input from terminal
> 
> This is related to a known issue documented in the `url-retrieve-synchronously` function of `url/url.el`.
> https://github.com/emacs-mirror/emacs/blob/7124598068ed267c34e1d70b49361f499fc31c9f/lisp/url/url.el#L297
> 
> If the code is changed to the following (the addition of `while-no-input`) then `accept-process-output` will no longer be interrupted.
> 
>             (unless (or (while-no-input
>                           (with-local-quit
>                             (accept-process-output proc 1)))
>                         (null proc))
> 
> The above possible fix is also documented here:
> https://github.com/emacs-helm/helm/pull/2419
> 
> In order to easily reproduce the issue, one way is to run emacs through terminal and to try to use the function `helm-google-suggest` from package `helm`.
> https://github.com/emacs-helm/helm/issues/2417
> 
> As you can see, the issue affects a lot of users. Currently, all users of terminal emacs that use helm.
> Unfortunately, it appears that it can't be handled outside of `url/url.el`.

I don't understand: with-local-quit isn't supposed to react to
keyboard input, only to C-g.  So what kind of pending keyboard input
interrupts it in this case?