diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-09-06 22:40:19 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-09-06 22:40:19 -0700 |
commit | ded0935f38e13b0b211c6a365277b26241325446 (patch) | |
tree | 1b580fc33d4bedd8c7efea82a06165d3505c99b4 /parser.c | |
parent | 2b77a3696e74eb9e0414bd3895fa6352f4572f25 (diff) | |
download | txr-ded0935f38e13b0b211c6a365277b26241325446.tar.gz txr-ded0935f38e13b0b211c6a365277b26241325446.tar.bz2 txr-ded0935f38e13b0b211c6a365277b26241325446.zip |
Bugfix: sig_mask not calling into the OS.
This is just amazingly broken; sig_mask recurses instead
of calling sigprocmask.
Also, we need a way to reload the signal mask cache from the
kernel, because the kernel can change the signal mask behind
our back.
* signal.c (sig_reload_cache): New static function.
(sig_handler): Call sig_reload_cache to ensure the
sig_blocked_cache accurately reflects the currently
blocked signal set.
(sig_init): Call sig_reload_cache at init time to
correctly reflect any blocked signals.
(sig_mask): Call sigprocmask instead of recursing. Moreover,
the correct op code is SIG_SETMASK, not SIG_BLOCK.
Diffstat (limited to 'parser.c')
0 files changed, 0 insertions, 0 deletions