summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--execute.c21
-rw-r--r--execute.h3
2 files changed, 21 insertions, 3 deletions
diff --git a/execute.c b/execute.c
index 6cf6615da4..3d2e511333 100644
--- a/execute.c
+++ b/execute.c
@@ -776,14 +776,29 @@ void exec_context_done(ExecContext *c) {
}
}
+void exec_command_done(ExecCommand *c) {
+ assert(c);
+
+ free(c->path);
+ c->path = NULL;
+
+ strv_free(c->argv);
+ c->argv = NULL;
+}
+
+void exec_command_done_array(ExecCommand *c, unsigned n) {
+ unsigned i;
+
+ for (i = 0; i < n; i++)
+ exec_command_done(c+i);
+}
+
void exec_command_free_list(ExecCommand *c) {
ExecCommand *i;
while ((i = c)) {
LIST_REMOVE(ExecCommand, command, c, i);
-
- free(i->path);
- strv_free(i->argv);
+ exec_command_done(i);
free(i);
}
}
diff --git a/execute.h b/execute.h
index 18948173b8..b4bb9600d1 100644
--- a/execute.h
+++ b/execute.h
@@ -162,6 +162,9 @@ int exec_spawn(ExecCommand *command,
struct CGroupBonding *cgroup_bondings,
pid_t *ret);
+void exec_command_done(ExecCommand *c);
+void exec_command_done_array(ExecCommand *c, unsigned n);
+
void exec_command_free_list(ExecCommand *c);
void exec_command_free_array(ExecCommand **c, unsigned n);