mirror of
https://github.com/systemd/systemd.git
synced 2024-12-27 07:22:31 +03:00
Introduce _cleanup_(unit_freep)
This commit is contained in:
parent
c70cac548a
commit
dc409696cf
@ -1696,6 +1696,7 @@ int manager_load_unit_prepare(
|
||||
sd_bus_error *e,
|
||||
Unit **_ret) {
|
||||
|
||||
_cleanup_(unit_freep) Unit *cleanup_ret = NULL;
|
||||
Unit *ret;
|
||||
UnitType t;
|
||||
int r;
|
||||
@ -1728,29 +1729,26 @@ int manager_load_unit_prepare(
|
||||
return 1;
|
||||
}
|
||||
|
||||
ret = unit_new(m, unit_vtable[t]->object_size);
|
||||
ret = cleanup_ret = unit_new(m, unit_vtable[t]->object_size);
|
||||
if (!ret)
|
||||
return -ENOMEM;
|
||||
|
||||
if (path) {
|
||||
ret->fragment_path = strdup(path);
|
||||
if (!ret->fragment_path) {
|
||||
unit_free(ret);
|
||||
if (!ret->fragment_path)
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
r = unit_add_name(ret, name);
|
||||
if (r < 0) {
|
||||
unit_free(ret);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
unit_add_to_load_queue(ret);
|
||||
unit_add_to_dbus_queue(ret);
|
||||
unit_add_to_gc_queue(ret);
|
||||
|
||||
*_ret = ret;
|
||||
cleanup_ret = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ Unit *unit_new(Manager *m, size_t size) {
|
||||
}
|
||||
|
||||
int unit_new_for_name(Manager *m, size_t size, const char *name, Unit **ret) {
|
||||
Unit *u;
|
||||
_cleanup_(unit_freep) Unit *u = NULL;
|
||||
int r;
|
||||
|
||||
u = unit_new(m, size);
|
||||
@ -136,12 +136,11 @@ int unit_new_for_name(Manager *m, size_t size, const char *name, Unit **ret) {
|
||||
return -ENOMEM;
|
||||
|
||||
r = unit_add_name(u, name);
|
||||
if (r < 0) {
|
||||
unit_free(u);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
*ret = u;
|
||||
u = NULL;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -610,6 +610,7 @@ DEFINE_CAST(SCOPE, Scope);
|
||||
|
||||
Unit *unit_new(Manager *m, size_t size);
|
||||
void unit_free(Unit *u);
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Unit *, unit_free);
|
||||
|
||||
int unit_new_for_name(Manager *m, size_t size, const char *name, Unit **ret);
|
||||
int unit_add_name(Unit *u, const char *name);
|
||||
|
@ -114,7 +114,7 @@ static void test_config_parse_exec(void) {
|
||||
ExecCommand *c = NULL, *c1;
|
||||
const char *ccc;
|
||||
_cleanup_(manager_freep) Manager *m = NULL;
|
||||
Unit *u = NULL;
|
||||
_cleanup_(unit_freep) Unit *u = NULL;
|
||||
|
||||
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m);
|
||||
if (MANAGER_SKIP_TEST(r)) {
|
||||
@ -441,8 +441,6 @@ static void test_config_parse_exec(void) {
|
||||
assert_se(c == NULL);
|
||||
|
||||
exec_command_free_list(c);
|
||||
|
||||
unit_free(u);
|
||||
}
|
||||
|
||||
static void test_config_parse_log_extra_fields(void) {
|
||||
@ -461,7 +459,7 @@ static void test_config_parse_log_extra_fields(void) {
|
||||
int r;
|
||||
|
||||
_cleanup_(manager_freep) Manager *m = NULL;
|
||||
Unit *u = NULL;
|
||||
_cleanup_(unit_freep) Unit *u = NULL;
|
||||
ExecContext c = {};
|
||||
|
||||
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m);
|
||||
@ -506,8 +504,6 @@ static void test_config_parse_log_extra_fields(void) {
|
||||
|
||||
exec_context_free_log_extra_fields(&c);
|
||||
|
||||
unit_free(u);
|
||||
|
||||
log_info("/* %s – bye */", __func__);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user