fix memory leak
This commit is contained in:
parent
a29c165985
commit
6915250300
|
@ -368,7 +368,7 @@ static void *mz_proc_thread_signal_worker(void *data) {
|
|||
int status;
|
||||
int pid, check_pid, is_group;
|
||||
sigset_t set;
|
||||
Child_Status *group_status, *prev_group;
|
||||
Child_Status *group_status, *prev_group, *next;
|
||||
|
||||
sigemptyset(&set);
|
||||
sigaddset(&set, SIGCHLD);
|
||||
|
@ -423,11 +423,13 @@ static void *mz_proc_thread_signal_worker(void *data) {
|
|||
} else if (pid > 0) {
|
||||
/* printf("SIGCHILD pid %i with status %i %i\n", pid, status, WEXITSTATUS(status)); */
|
||||
if (is_group) {
|
||||
group_status = group_status->next;
|
||||
next = group_status->next;
|
||||
if (prev_group)
|
||||
prev_group->next_group = group_status;
|
||||
prev_group->next_group = next;
|
||||
else
|
||||
child_group_statuses = group_status;
|
||||
child_group_statuses = next;
|
||||
free(group_status);
|
||||
group_status = next;
|
||||
} else
|
||||
add_child_status(pid, status);
|
||||
} else {
|
||||
|
|
|
@ -6865,11 +6865,14 @@ static void check_child_done(pid_t pid)
|
|||
if (result > 0) {
|
||||
if (is_group) {
|
||||
/* done with an inaccessible group id */
|
||||
unused = (void **)unused[1];
|
||||
void *next;
|
||||
next = (void **)unused[1];
|
||||
if (unused_prev)
|
||||
unused_prev[1] = unused;
|
||||
unused_prev[1] = unused[1];
|
||||
else
|
||||
unused_groups = unused;
|
||||
unused_groups = unused[1];
|
||||
free(unused);
|
||||
unused = (void **)next;
|
||||
}
|
||||
|
||||
START_XFORM_SKIP;
|
||||
|
|
Loading…
Reference in New Issue
Block a user