From 537ebb941107ad8c3c51e559eea865bd5348d1de Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 15 Mar 2011 17:59:00 +0100 Subject: [PATCH] select: better check for null bit arrays Signed-off-by: Jaroslav Kysela --- alsa/alsa-oss.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/alsa/alsa-oss.c b/alsa/alsa-oss.c index 632679f..8294344 100644 --- a/alsa/alsa-oss.c +++ b/alsa/alsa-oss.c @@ -687,19 +687,23 @@ static int select_with_pcm(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, int result = lib_oss_pcm_select_result(fd, rfds1, wfds1, efds1); r1 = w1 = e1 = 0; if (result < 0 && e) { - FD_SET(fd, efds); + if (efds) + FD_SET(fd, efds); e1 = 1; } else { if (result & OSS_WAIT_EVENT_ERROR) { - FD_SET(fd, efds); + if (efds) + FD_SET(fd, efds); e1 = 1; } if (result & OSS_WAIT_EVENT_READ) { - FD_SET(fd, rfds); + if (rfds) + FD_SET(fd, rfds); r1 = 1; } if (result & OSS_WAIT_EVENT_WRITE) { - FD_SET(fd, wfds); + if (wfds) + FD_SET(fd, wfds); w1 = 1; } } @@ -708,11 +712,11 @@ static int select_with_pcm(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, w1 = (w && FD_ISSET(fd, wfds1)); e1 = (e && FD_ISSET(fd, efds1)); } - if (r && !r1) + if (r && !r1 && rfds) FD_CLR(fd, rfds); - if (w && !w1) + if (w && !w1 && wfds) FD_CLR(fd, wfds); - if (e && !e1) + if (e && !e1 && efds) FD_CLR(fd, efds); if (r1 || w1 || e1) count++; -- 2.47.1