Update of /cvsroot/alsa/alsa-oss/alsa In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4366/alsa
Modified Files: pcm.c Log Message: fixes in select() mangling Index: pcm.c =================================================================== RCS file: /cvsroot/alsa/alsa-oss/alsa/pcm.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- pcm.c 12 Feb 2004 18:51:37 -0000 1.3 +++ pcm.c 14 Feb 2004 18:42:17 -0000 1.4 @@ -1294,15 +1294,21 @@ for (j = 0; j < count; j++) { int fd = ufds[j].fd; unsigned short events = ufds[j].events; - FD_CLR(fd, readfds); - FD_CLR(fd, writefds); - FD_CLR(fd, exceptfds); - if (events & POLLIN) - FD_SET(fd, readfds); - if (events & POLLOUT) - FD_SET(fd, writefds); - if (events & (POLLERR|POLLNVAL)) - FD_SET(fd, exceptfds); + if (readfds) { + FD_CLR(fd, readfds); + if (events & POLLIN) + FD_SET(fd, readfds); + } + if (writefds) { + FD_CLR(fd, writefds); + if (events & POLLOUT) + FD_SET(fd, writefds); + } + if (exceptfds) { + FD_CLR(fd, exceptfds); + if (events & (POLLERR|POLLNVAL)) + FD_SET(fd, exceptfds); + } } } } @@ -1340,11 +1346,11 @@ for (j = 0; j < count; j++) { int fd = ufds[j].fd; revents = 0; - if (FD_ISSET(fd, readfds)) + if (readfds && FD_ISSET(fd, readfds)) revents |= POLLIN; - if (FD_ISSET(fd, writefds)) + if (writefds && FD_ISSET(fd, writefds)) revents |= POLLOUT; - if (FD_ISSET(fd, exceptfds)) + if (exceptfds && FD_ISSET(fd, exceptfds)) revents |= POLLERR; ufds[j].revents = revents; } ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog