improve sanity check code

Partial fix for #3737
This commit is contained in:
Kurtis Rader 2017-01-16 20:33:58 -08:00
parent ac9a0f0dbf
commit 7e6543c4cd
3 changed files with 7 additions and 10 deletions

View file

@ -984,18 +984,16 @@ int proc_format_status(int status) {
}
void proc_sanity_check() {
job_t *j;
job_t *fg_job = 0;
job_t *fg_job = NULL;
job_iterator_t jobs;
while ((j = jobs.next())) {
while (job_t *j = jobs.next()) {
if (!job_get_flag(j, JOB_CONSTRUCTED)) continue;
// More than one foreground job?
if (job_get_flag(j, JOB_FOREGROUND) && !(job_is_stopped(j) || job_is_completed(j))) {
if (fg_job != 0) {
if (fg_job) {
debug(0, _(L"More than one job in foreground: job 1: '%ls' job 2: '%ls'"),
fg_job->command_wcstr(), j->command_wcstr());
sanity_lose();

View file

@ -12,19 +12,18 @@
#include "sanity.h"
/// Status from earlier sanity checks.
static int insane;
static bool insane = false;
void sanity_lose() {
debug(0, _(L"Errors detected, shutting down. Break on sanity_lose() to debug."));
insane = 1;
insane = true;
}
int sanity_check() {
bool sanity_check() {
if (!insane && shell_is_interactive()) history_sanity_check();
if (!insane) reader_sanity_check();
if (!insane) kill_sanity_check();
if (!insane) proc_sanity_check();
return insane;
}

View file

@ -6,7 +6,7 @@
void sanity_lose();
/// Perform sanity checks, return 1 if program is in a sane state 0 otherwise.
int sanity_check();
bool sanity_check();
/// Try and determine if ptr is a valid pointer. If not, loose sanity.
///