yelni...@tutamail.com, le ven. 29 août 2025 16:04:38 +0200, a ecrit:
> Aug 28, 2025, 20:50 by samuel.thiba...@gnu.org:
> 
> > yelni...@tutamail.com, le mar. 26 août 2025 12:33:44 +0200, a ecrit:
> >
> >> Hello Samuel,
> >>
> >> Something like this fixes the D_WOULD_BLOCK errno for me.
> >> --8<---------------cut here---------------start------------->8---
> >> diff --git a/trans/streamio.c b/trans/streamio.c
> >> index e42ff908..93057146 100644
> >> --- a/trans/streamio.c
> >> +++ b/trans/streamio.c
> >> @@ -1049,6 +1049,8 @@ device_read_reply_inband (mach_port_t reply, 
> >> kern_return_t errorcode,
> >>  
> >>    input_pending = 0;
> >>    err = errorcode;
> >> +  if (err == D_WOULD_BLOCK)
> >> +    err = EWOULDBLOCK;
> >>
> >
> > Don't we rather want to set it to 0?
> >
> > If we leave err non-0, the rest of the function will call dev_close. I
> > don't think we want to close the file just on a D_WOULD_BLOCK
> > notification?
> > But it's not an error, it just tells that there is currently nothing to
> > read. If nowait is 0, we still want to enter the wait loop.
> >
> This makes a lot more sense.
> What about this?

Yep, applied, thanks!

> --8<---------------cut here---------------start------------->8---
> diff --git a/trans/streamio.c b/trans/streamio.c
> index e42ff908..c6e7229e 100644
> --- a/trans/streamio.c
> +++ b/trans/streamio.c
> @@ -1049,9 +1049,11 @@ device_read_reply_inband (mach_port_t reply, 
> kern_return_t errorcode,
>  
>    input_pending = 0;
>    err = errorcode;
> +  if (err == D_WOULD_BLOCK)
> +    err = 0;
>    if (!err)
>      {
> -      if (datalen == 0)
> +      if (datalen == 0 && errorcode != D_WOULD_BLOCK)
> {
>   eof = 1;
>   dev_close ();
> --8<---------------cut here---------------end--------------->8---

Reply via email to