chiark / gitweb /
service: fix units with more than one socket
[elogind.git] / src / service.c
index c74e8a009f17c313e27180039463b81e666d4d8b..a297cd911724540c75a1d98483139f1996559e2f 100644 (file)
@@ -406,7 +406,7 @@ static int sysv_fix_order(Service *s) {
 
                 /* FIXME: Maybe we should compare the name here lexicographically? */
 
-                if (!(r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
+                if ((r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
                         return r;
         }
 
@@ -1024,7 +1024,7 @@ static int fsck_fix_order(Service *s) {
                 else
                         continue;
 
-                if (!(r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
+                if ((r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0)
                         return r;
         }
 
@@ -1592,8 +1592,8 @@ static int service_collect_fds(Service *s, int **fds, unsigned *n_fds) {
                                 goto fail;
                         }
 
-                        memcpy(t, rfds, rn_fds);
-                        memcpy(t+rn_fds, cfds, cn_fds);
+                        memcpy(t, rfds, rn_fds * sizeof(int));
+                        memcpy(t+rn_fds, cfds, cn_fds * sizeof(int));
                         free(rfds);
                         free(cfds);
 
@@ -1882,6 +1882,7 @@ static void service_enter_signal(Service *s, ServiceState state, bool success) {
                                 wait_for_exit = true;
 
                         set_free(pid_set);
+                        pid_set = NULL;
                 }
         }