From: Lennart Poettering Date: Wed, 18 Oct 2023 12:03:36 +0000 (+0200) Subject: fd-util: add new helper close_many_unset() X-Git-Tag: v255-rc1~212^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d3eb74f8f844cf3dc7913d861070ffda66035933;p=thirdparty%2Fsystemd.git fd-util: add new helper close_many_unset() --- diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index 33c4a057adf..5fdbf8f2693 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -99,6 +99,13 @@ void close_many(const int fds[], size_t n_fd) { safe_close(fds[i]); } +void close_many_unset(int fds[], size_t n_fd) { + assert(fds || n_fd <= 0); + + for (size_t i = 0; i < n_fd; i++) + fds[i] = safe_close(fds[i]); +} + void close_many_and_free(int *fds, size_t n_fds) { assert(fds || n_fds <= 0); diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index 1f5ed828b7b..b2efdc9c234 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -30,6 +30,7 @@ static inline int safe_close_above_stdio(int fd) { } void close_many(const int fds[], size_t n_fd); +void close_many_unset(int fds[], size_t n_fd); void close_many_and_free(int *fds, size_t n_fds); int fclose_nointr(FILE *f); diff --git a/src/core/execute.c b/src/core/execute.c index ce947a7a52f..46fb8805b3a 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -2251,8 +2251,7 @@ void exec_params_serialized_done(ExecParameters *p) { if (!p) return; - for (size_t i = 0; p->fds && i < p->n_socket_fds + p->n_storage_fds; i++) - p->fds[i] = safe_close(p->fds[i]); + close_many_unset(p->fds, p->n_socket_fds + p->n_storage_fds); p->cgroup_path = mfree(p->cgroup_path);