[PATCH] Be truthful about reporting whether readahead is available

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Apr 5 13:56:00 GMT 2016


Thomas?

Any input?

On Apr  5 10:52, Johannes Schindelin wrote:
> In 7346568 (Make requested console reports work, 2016-03-16), code was
> introduced to report the current cursor position. It works by using a
> pointer that either points to the next byte in the readahead buffer, or
> to a NUL byte if the buffer is depleted, or the pointer is NULL.
> 
> These conditions are heeded in the fhandler_console::read() method, but
> the condition that the pointer can point at the end of the readahead
> buffer was not handled properly in the get_cons_readahead_valid()
> method.
> 
> This poses a problem e.g. in Git for Windows (which uses a slightly
> modified MSYS2 runtime which is in turn a slightly modified Cygwin
> runtime) when vim queries the cursor position and immediately goes on to
> read console input, erroneously thinking that the readahead buffer is
> valid when it is already depleted instead. This condition results in an
> apparent freeze that can be helped only by pressing keys repeatedly.
> 
> The full Git for Windows bug report is here:
> 
> 	https://github.com/git-for-windows/git/issues/711
> 
> Let's just teach the get_cons_readahead_valid() method to handle a
> depleted readahead buffer correctly.
> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  winsup/cygwin/fhandler.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
> index 4610557..bd1a923 100644
> --- a/winsup/cygwin/fhandler.h
> +++ b/winsup/cygwin/fhandler.h
> @@ -1453,7 +1453,8 @@ private:
>    bool focus_aware () {return shared_console_info->con.use_focus;}
>    bool get_cons_readahead_valid ()
>    {
> -    return shared_console_info->con.cons_rapoi != NULL;
> +    return shared_console_info->con.cons_rapoi != NULL &&
> +      *shared_console_info->con.cons_rapoi;
>    }
>  
>    select_record *select_read (select_stuff *);
> -- 
> 2.8.0.windows.1


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20160405/c6f6225b/attachment.sig>


More information about the Cygwin-patches mailing list