From: Lennart Poettering Date: Tue, 26 Sep 2017 20:49:23 +0000 (+0200) Subject: core: free_and_strdup() FTW! X-Git-Tag: v235~50^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=84b26d5149e227af14126eee744bfd6dae7afb35;p=thirdparty%2Fsystemd.git core: free_and_strdup() FTW! --- diff --git a/src/core/unit.c b/src/core/unit.c index 7ca08af291b..c31ddd771e7 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -314,22 +314,16 @@ int unit_choose_id(Unit *u, const char *name) { } int unit_set_description(Unit *u, const char *description) { - char *s; + int r; assert(u); - if (isempty(description)) - s = NULL; - else { - s = strdup(description); - if (!s) - return -ENOMEM; - } - - free(u->description); - u->description = s; + r = free_and_strdup(&u->description, empty_to_null(description)); + if (r < 0) + return r; + if (r > 0) + unit_add_to_dbus_queue(u); - unit_add_to_dbus_queue(u); return 0; }