Explicitly nulling chained_wait_prev after munmap()

This commit is contained in:
Mahmoud Al-Qudsi 2017-07-25 19:19:20 -05:00 committed by Kurtis Rader
parent cdb72b7024
commit 47d8a7e882

View file

@ -1071,8 +1071,9 @@ void exec_job(parser_t &parser, job_t *j) {
{ {
pid = execute_fork(false); pid = execute_fork(false);
if (pid == 0) { if (pid == 0) {
// a hack that fixes any tcsetpgrp errors caused by race conditions // usleep is a hack that fixes any tcsetpgrp errors caused by race conditions
// usleep(20 * 1000); // usleep(20 * 1000);
// it should no longer be needed with the chained_wait_next code below.
if (chained_wait_next != nullptr) { if (chained_wait_next != nullptr) {
debug(3, L"Waiting for next command in chain to start.\n"); debug(3, L"Waiting for next command in chain to start.\n");
sem_wait(chained_wait_next); sem_wait(chained_wait_next);
@ -1126,6 +1127,7 @@ void exec_job(parser_t &parser, job_t *j) {
debug(3, L"Unblocking previous command in chain.\n"); debug(3, L"Unblocking previous command in chain.\n");
sem_post(chained_wait_prev); sem_post(chained_wait_prev);
munmap(chained_wait_prev, sizeof(sem_t)); munmap(chained_wait_prev, sizeof(sem_t));
chained_wait_prev = nullptr;
} }
if (chained_wait_next != nullptr) { if (chained_wait_next != nullptr) {
chained_wait_prev = chained_wait_next; chained_wait_prev = chained_wait_next;