@@ -1650,6 +1650,7 @@
static int win_chr_poll(void *opaque)
{
+ int available;
CharDriverState *chr = opaque;
WinCharState *s = chr->opaque;
COMSTAT status;
@@ -1658,9 +1659,9 @@
ClearCommError(s->hcom, &comerr, &status);
if (status.cbInQue > 0) {
s->len = status.cbInQue;
- win_chr_read_poll(chr);
+ available = win_chr_read_poll(chr);
win_chr_read(chr);
- return 1;
+ return available != 0;
}
return 0;
}
@@ -1692,6 +1693,7 @@
static int win_chr_pipe_poll(void *opaque)
{
+ int available;
CharDriverState *chr = opaque;
WinCharState *s = chr->opaque;
DWORD size;
@@ -1699,9 +1701,9 @@
PeekNamedPipe(s->hcom, NULL, 0, NULL, &size, NULL);
if (size > 0) {
s->len = size;
- win_chr_read_poll(chr);
+ available = win_chr_read_poll(chr);
win_chr_read(chr);
- return 1;
+ return available != 0;
}
return 0;
}