main: use strdup instead of free_and_strdup to initialize default unit (#4335)
author0xAX <0xAX@users.noreply.github.com>
Mon, 10 Oct 2016 20:11:36 +0000 (23:11 +0300)
committerLennart Poettering <lennart@poettering.net>
Mon, 10 Oct 2016 20:11:36 +0000 (22:11 +0200)
Previously we've used free_and_strdup() to fill arg_default_unit with unit
name, If we didn't pass default unit name through a kernel command line or
command line arguments. But we can use just strdup() instead of
free_and_strdup() for this, because we will start fill arg_default_unit
only if it wasn't set before.

src/core/main.c

index 30d9c43..9985510 100644 (file)
@@ -1586,9 +1586,9 @@ int main(int argc, char *argv[]) {
 
         /* Initialize default unit */
         if (!arg_default_unit) {
-                r = free_and_strdup(&arg_default_unit, SPECIAL_DEFAULT_TARGET);
-                if (r < 0) {
-                        log_emergency_errno(r, "Failed to set default unit %s: %m", SPECIAL_DEFAULT_TARGET);
+                arg_default_unit = strdup(SPECIAL_DEFAULT_TARGET);
+                if (!arg_default_unit) {
+                        r = log_oom();
                         error_message = "Failed to set default unit";
                         goto finish;
                 }