]> code.delx.au - pulseaudio/commitdiff
fix two thinkos in signal reset/close_all code
authorLennart Poettering <lennart@poettering.net>
Tue, 29 Jul 2008 13:36:00 +0000 (15:36 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 29 Jul 2008 13:36:00 +0000 (15:36 +0200)
src/pulsecore/core-util.c

index d259fb16055945e77e0d4de6df566415dc913ec5..c8dc7e5fb8806db3e3a8df6413fd6f582cc5afb0 100644 (file)
@@ -1887,17 +1887,21 @@ int pa_close_allv(const int except_fds[]) {
     if (getrlimit(RLIMIT_NOFILE, &rl) < 0)
         return -1;
 
-    for (fd = 0; fd < (int) rl.rlim_max; fd++) {
+    for (fd = 3; fd < (int) rl.rlim_max; fd++) {
         int i;
+        pa_bool_t found;
 
-        if (fd <= 3)
-            continue;
-
+        found = FALSE;
         for (i = 0; except_fds[i] >= 0; i++)
-            if (except_fds[i] == fd)
-                continue;
+            if (except_fds[i] == fd) {
+                found = TRUE;
+                break;
+            }
 
-        if (close(fd) < 0 && errno != EBADF)
+        if (found)
+            continue;
+
+        if (pa_close(fd) < 0 && errno != EBADF)
             return -1;
     }
 
@@ -1972,10 +1976,11 @@ int pa_reset_sigs(int except, ...) {
 
     i = 0;
     if (except >= 1) {
+        int sig;
         p[i++] = except;
 
-        while ((p[i++] = va_arg(ap, int)) >= 0)
-            ;
+        while ((sig = va_arg(ap, int)) >= 0)
+            sig = p[i++];
     }
     p[i] = -1;