diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-05 09:30:03 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-05 11:05:31 -0300 |
commit | 796b79db8cc952deb8c750b62ee8da6caafe1d88 (patch) | |
tree | 50555eb21796282c1fdc0ef2b2cbd1136f81bd2e /src | |
parent | cb9afe0dc0c9bb19ad6755df5677351e1e7fbb22 (diff) | |
download | rneovim-796b79db8cc952deb8c750b62ee8da6caafe1d88.tar.gz rneovim-796b79db8cc952deb8c750b62ee8da6caafe1d88.tar.bz2 rneovim-796b79db8cc952deb8c750b62ee8da6caafe1d88.zip |
Stop queueing events when signals are rejected
The only exception is SIGINT, which will set `got_int` directly. This will be
necessary for the new implementation of `mch_call_shell`
Diffstat (limited to 'src')
-rw-r--r-- | src/os/signal.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/os/signal.c b/src/os/signal.c index 4b14090c56..966afa0d90 100644 --- a/src/os/signal.c +++ b/src/os/signal.c @@ -148,9 +148,18 @@ static void deadly_signal(int signum) static void signal_cb(uv_signal_t *handle, int signum) { - Event *event = (Event *)xmalloc(sizeof(Event)); - event->type = kEventSignal; - event->data = xmalloc(sizeof(int)); - *(int *)event->data = signum; - event_push(event); + Event *event; + + if (rejecting_deadly) { + if (signum == SIGINT) { + got_int = TRUE; + } + } else { + event = (Event *)xmalloc(sizeof(Event)); + event->type = kEventSignal; + event->data = xmalloc(sizeof(int)); + *(int *)event->data = signum; + event_push(event); + } + } |