if (!s->scope) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
- char *scope, *job = NULL;
+ _cleanup_free_ char *scope = NULL;
+ char *job = NULL;
const char *description;
scope = strjoin("session-", s->id, ".scope");
properties,
&error,
&job);
- if (r < 0) {
- log_error_errno(r, "Failed to start session scope %s: %s", scope, bus_error_message(&error, r));
- free(scope);
- return r;
- } else {
- s->scope = scope;
+ if (r < 0)
+ return log_error_errno(r, "Failed to start session scope %s: %s", scope, bus_error_message(&error, r));
- free(s->scope_job);
- s->scope_job = job;
- }
+
+ s->scope = TAKE_PTR(scope);
+ free_and_replace(s->scope_job, job);
}
if (s->scope)
assert(u);
r = manager_stop_unit(u->manager, u->slice, &error, &job);
- if (r < 0) {
- log_error("Failed to stop user slice: %s", bus_error_message(&error, r));
- return r;
- }
-
- free(u->slice_job);
- u->slice_job = job;
+ if (r < 0)
+ return log_error_errno(r, "Failed to stop user slice: %s", bus_error_message(&error, r));
- return r;
+ return free_and_replace(u->slice_job, job);
}
static int user_stop_service(User *u) {
assert(u);
r = manager_stop_unit(u->manager, u->service, &error, &job);
- if (r < 0) {
- log_error("Failed to stop user service: %s", bus_error_message(&error, r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to stop user service: %s", bus_error_message(&error, r));
- free_and_replace(u->service_job, job);
- return r;
+ return free_and_replace(u->service_job, job);
}
int user_stop(User *u, bool force) {