# HG changeset patch # User nicodvb # Date 1113853780 0 # Node ID 4d8a0ecce6aca6422301d32c2e179468295e04c6 # Parent 05aa13cdf92fe7fbd90ca6fb9d7de2e022118796 check the result of poll() before read()ing; 100l diff -r 05aa13cdf92f -r 4d8a0ecce6ac libmpdemux/dvbin.c --- a/libmpdemux/dvbin.c Mon Apr 18 15:52:38 2005 +0000 +++ b/libmpdemux/dvbin.c Mon Apr 18 19:49:40 2005 +0000 @@ -404,14 +404,8 @@ pfds[0].fd = fd; pfds[0].events = POLLIN | POLLPRI; - poll(pfds, 1, 500); rk = size - pos; - if((rk = read(fd, &buffer[pos], rk)) > 0) - { - pos += rk; - mp_msg(MSGT_DEMUX, MSGL_DBG3, "ret (%d) bytes\n", pos); - } - else + if(poll(pfds, 1, 500) <= 0) { errno = 0; mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_streaming_read, attempt N. %d failed with errno %d when reading %d bytes\n", tries, errno, size-pos); @@ -419,8 +413,14 @@ continue; else break; - } } + if((rk = read(fd, &buffer[pos], rk)) > 0) + { + pos += rk; + mp_msg(MSGT_DEMUX, MSGL_DBG3, "ret (%d) bytes\n", pos); + } + } + if(! pos) mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_streaming_read, return %d bytes\n", pos);