Cygwin: select: check for negative return from pipe_data_available
Make sure except_ready is set (if except_selected) on a negative return from pipe_data_available.
This commit is contained in:
parent
6e64fccb5f
commit
18fab2f834
|
@ -753,8 +753,11 @@ out:
|
||||||
gotone += s->except_ready = true;
|
gotone += s->except_ready = true;
|
||||||
return gotone;
|
return gotone;
|
||||||
}
|
}
|
||||||
gotone += s->write_ready = pipe_data_available (s->fd, fh, h, true);
|
int n = pipe_data_available (s->fd, fh, h, true);
|
||||||
select_printf ("write: %s, gotone %d", fh->get_name (), gotone);
|
select_printf ("write: %s, n %d", fh->get_name (), n);
|
||||||
|
gotone += s->write_ready = n;
|
||||||
|
if (n < 0 && s->except_selected)
|
||||||
|
gotone += s->except_ready = true;
|
||||||
}
|
}
|
||||||
return gotone;
|
return gotone;
|
||||||
}
|
}
|
||||||
|
@ -953,9 +956,11 @@ peek_fifo (select_record *s, bool from_select)
|
||||||
out:
|
out:
|
||||||
if (s->write_selected)
|
if (s->write_selected)
|
||||||
{
|
{
|
||||||
gotone += s->write_ready
|
int n = pipe_data_available (s->fd, fh, fh->get_handle (), true);
|
||||||
= pipe_data_available (s->fd, fh, fh->get_handle (), true);
|
select_printf ("write: %s, n %d", fh->get_name (), n);
|
||||||
select_printf ("write: %s, gotone %d", fh->get_name (), gotone);
|
gotone += s->write_ready = n;
|
||||||
|
if (n < 0 && s->except_selected)
|
||||||
|
gotone += s->except_ready = true;
|
||||||
}
|
}
|
||||||
return gotone;
|
return gotone;
|
||||||
}
|
}
|
||||||
|
@ -1394,8 +1399,11 @@ out:
|
||||||
HANDLE h = ptys->get_output_handle ();
|
HANDLE h = ptys->get_output_handle ();
|
||||||
if (s->write_selected)
|
if (s->write_selected)
|
||||||
{
|
{
|
||||||
gotone += s->write_ready = pipe_data_available (s->fd, fh, h, true);
|
int n = pipe_data_available (s->fd, fh, h, true);
|
||||||
select_printf ("write: %s, gotone %d", fh->get_name (), gotone);
|
select_printf ("write: %s, n %d", fh->get_name (), n);
|
||||||
|
gotone += s->write_ready = n;
|
||||||
|
if (n < 0 && s->except_selected)
|
||||||
|
gotone += s->except_ready = true;
|
||||||
}
|
}
|
||||||
return gotone;
|
return gotone;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue