chiark / gitweb /
core: free word later in parse_proc_cmdline
[elogind.git] / src / core / main.c
index 3c0f5f9a94d7c11121059ed7fb4608ae93a6324d..12af3cdd270bab97d255c3a7c7ac9d188413391b 100644 (file)
@@ -727,12 +727,13 @@ static int parse_proc_cmdline(void) {
                 }
 
                 r = parse_proc_cmdline_word(word);
-                free(word);
-
                 if (r < 0) {
                         log_error("Failed on cmdline argument %s: %s", word, strerror(-r));
+                        free(word);
                         goto finish;
                 }
+
+                free(word);
         }
 
         r = 0;
@@ -1297,7 +1298,8 @@ int main(int argc, char *argv[]) {
         }
 
         /* Initialize default unit */
-        if (r == set_default_unit(SPECIAL_DEFAULT_TARGET) < 0) {
+        r = set_default_unit(SPECIAL_DEFAULT_TARGET);
+        if (r < 0) {
                 log_error("Failed to set default unit %s: %s", SPECIAL_DEFAULT_TARGET, strerror(-r));
                 goto finish;
         }
@@ -1508,11 +1510,11 @@ int main(int argc, char *argv[]) {
 
         if (arg_running_as == MANAGER_USER) {
                 /* Become reaper of our children */
-                r = prctl(PR_SET_CHILD_SUBREAPER, 1);
-                if (r < 0)
-                        log_error("Failed to prctl(PR_SET_CHILD_SUBREAPER): %s", strerror(-r));
-                if (r == -EINVAL)
-                        log_error("Perhaps the kernel version is too old (< 3.4?)");
+                if (prctl(PR_SET_CHILD_SUBREAPER, 1) < 0) {
+                        log_warning("Failed to make us a subreaper: %m");
+                        if (errno == EINVAL)
+                                log_info("Perhaps the kernel version is too old (< 3.4?)");
+                }
         }
 
         r = manager_new(arg_running_as, &m);