execute: introduce exec_command_done() to free data from static ExecCommand structs

This commit is contained in:
Lennart Poettering 2010-04-10 17:47:07 +02:00
parent 26fd040d4a
commit 43d0fcbd3f
2 changed files with 21 additions and 3 deletions

View File

@ -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);
}
}

View File

@ -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);