]> code.delx.au - pulseaudio/commitdiff
alsa-util: check if mixer_poll_descriptors_count() < 0
authorMarc-André Lureau <marc-andre.lureau@nokia.com>
Wed, 18 Feb 2009 19:35:18 +0000 (21:35 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 19 Feb 2009 04:00:37 +0000 (05:00 +0100)
src/modules/alsa/alsa-util.c

index c53fd10d2a48060ceb7c407b175f0ac3c1c6aaf3..a0907c4d34e1d932e993cc232b40f331be665396 100644 (file)
@@ -113,7 +113,7 @@ static void io_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t
 static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
     struct pa_alsa_fdlist *fdl = userdata;
     unsigned num_fds, i;
-    int err;
+    int err, n;
     struct pollfd *temp;
 
     pa_assert(a);
@@ -122,7 +122,11 @@ static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
 
     a->defer_enable(fdl->defer, 0);
 
-    num_fds = (unsigned) snd_mixer_poll_descriptors_count(fdl->mixer);
+    if ((n = snd_mixer_poll_descriptors_count(fdl->mixer)) < 0) {
+        pa_log("snd_mixer_poll_descriptors_count() failed: %s", snd_strerror(n));
+        return;
+    }
+    num_fds = (unsigned) n;
 
     if (num_fds != fdl->num_fds) {
         if (fdl->fds)