]> git.alsa-project.org Git - alsa-oss.git/commitdiff
select: better check for null bit arrays
authorJaroslav Kysela <perex@perex.cz>
Tue, 15 Mar 2011 16:59:00 +0000 (17:59 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 15 Mar 2011 16:59:00 +0000 (17:59 +0100)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
alsa/alsa-oss.c

index 632679f8d6ddf37ce5ace2753466dd1106486949..829434487057a00878ce321df9de73a85257f738 100644 (file)
@@ -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++;