summaryrefslogtreecommitdiff
path: root/edit-readline.c
diff options
context:
space:
mode:
authorToby Goodwin <toby@paccrat.org>2016-08-25 21:46:12 +0100
committerGitHub <noreply@github.com>2016-08-25 21:46:12 +0100
commit2ab8e78dfa862d4a378f766548442c24efa516cc (patch)
treece4d6acab4282f818f6c8068e93523a1aecc6ba4 /edit-readline.c
parentc95bdf7ce9be6c6ed8ca4b0a474fc4947836eba9 (diff)
parenta5faae14cd81c019b8757c2f263799d19a2218e0 (diff)
Merge pull request #14 from muennich/edit-sigh
Restore signal handlers when catching signals in edit_alloc()
Diffstat (limited to 'edit-readline.c')
-rw-r--r--edit-readline.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/edit-readline.c b/edit-readline.c
index 6a997c5..6d99d94 100644
--- a/edit-readline.c
+++ b/edit-readline.c
@@ -32,7 +32,11 @@ void *edit_begin(int fd) {
return c;
}
+static void (*oldint)(int), (*oldquit)(int);
+
static void edit_catcher(int sig) {
+ sys_signal(SIGINT, oldint);
+ sys_signal(SIGQUIT, oldquit);
write(2, "\n", 1);
rc_raise(eError);
}
@@ -41,7 +45,6 @@ static char *prompt;
char *edit_alloc(void *cookie, size_t *count) {
struct cookie *c = cookie;
- void (*oldint)(int), (*oldquit)(int);
oldint = sys_signal(SIGINT, edit_catcher);
oldquit = sys_signal(SIGQUIT, edit_catcher);