Reimplement signal handling event machinery

Prior to this fix, fish had a signal_list_t that accumulated signals.
Signals were added to an array of integers, with an overflow flag.
The event machinery would attempt to atomically "swap in" the other list.

After this fix, there is a single list of pending signal events, as an array
of atomic booleans. The signal handler sets the boolean corresponding to its
signal.
This commit is contained in:
ridiculousfish
2019-02-20 19:36:29 -08:00
parent 003998c921
commit 1b8ddacfed
4 changed files with 99 additions and 84 deletions

View File

@@ -80,7 +80,7 @@ bool is_subshell = false;
bool is_block = false;
bool is_breakpoint = false;
bool is_login = false;
int is_event = false;
int is_event = 0;
int job_control_mode = JOB_CONTROL_INTERACTIVE;
int no_exec = 0;