diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2016-10-03 09:37:10 -0700 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2016-10-03 09:37:10 -0700 |
commit | 4abbb4b4739598c50973593d2787696116e49fcf (patch) | |
tree | dbe9dbcc2e6b9938c832e933a6a3ef80a21cdbc6 | |
parent | b71abea40f491726f96ea26143306ec27aa611ee (diff) | |
download | zsh-4abbb4b4739598c50973593d2787696116e49fcf.tar.gz zsh-4abbb4b4739598c50973593d2787696116e49fcf.tar.xz zsh-4abbb4b4739598c50973593d2787696116e49fcf.zip |
39548: DEBUG for queueing_enabled
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | Src/signals.c | 4 | ||||
-rw-r--r-- | Src/signals.h | 31 |
3 files changed, 34 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 81d31c969..a7dfa2e3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2016-10-03 Barton E. Schaefer <schaefer@zsh.org> + * 39548: Src/signals.c, Src/signals.h: DEBUG for queueing_enabled + * 39547: Src/Zle/zle_main.c: handle zero delta in calc_timeout() 2016-10-03 Peter Stephenson <p.stephenson@samsung.com> diff --git a/Src/signals.c b/Src/signals.c index e2587dc72..9e05add09 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -72,6 +72,10 @@ mod_export int queueing_enabled, queue_front, queue_rear; mod_export int signal_queue[MAX_QUEUE_SIZE]; /**/ mod_export sigset_t signal_mask_queue[MAX_QUEUE_SIZE]; +#ifdef DEBUG +/**/ +mod_export int queue_in; +#endif /* Variables used by trap queueing */ diff --git a/Src/signals.h b/Src/signals.h index d68096891..1904f4326 100644 --- a/Src/signals.h +++ b/Src/signals.h @@ -82,8 +82,6 @@ #define MAX_QUEUE_SIZE 128 -#define queue_signals() (queueing_enabled++) - #define run_queued_signals() do { \ while (queue_front != queue_rear) { /* while signals in queue */ \ sigset_t oset; \ @@ -94,12 +92,35 @@ } \ } while (0) +#ifdef DEBUG + +#define queue_signals() (queue_in++, queueing_enabled++) + #define unqueue_signals() do { \ DPUTS(!queueing_enabled, "BUG: unqueue_signals called but not queueing"); \ + --queue_in; \ if (!--queueing_enabled) run_queued_signals(); \ } while (0) -#define queue_signal_level() queueing_enabled +#define dont_queue_signals() do { \ + queue_in = queueing_enabled; \ + queueing_enabled = 0; \ + run_queued_signals(); \ +} while (0) + +#define restore_queue_signals(q) do { \ + DPUTS2(queueing_enabled && queue_in != q, \ + "BUG: q = %d != queue_in = %d", q, queue_in); \ + queue_in = (queueing_enabled = (q)); \ +} while (0) + +#else /* !DEBUG */ + +#define queue_signals() (queueing_enabled++) + +#define unqueue_signals() do { \ + if (!--queueing_enabled) run_queued_signals(); \ +} while (0) #define dont_queue_signals() do { \ queueing_enabled = 0; \ @@ -108,6 +129,10 @@ #define restore_queue_signals(q) (queueing_enabled = (q)) +#endif /* DEBUG */ + +#define queue_signal_level() queueing_enabled + #ifdef BSD_SIGNALS #define signal_block(S) sigblock(S) #else |