commit 651e2b0ee2bae4826c9cc9f1215cd57965676bdf
Author: Roberto E. Vargas Caballero <[email protected]>
AuthorDate: Sun Mar 4 11:58:07 2018 +0100
Commit: sin <[email protected]>
CommitDate: Tue Jul 3 09:31:46 2018 +0100
Set restore point before setting signal handlers
diff --git a/ed.c b/ed.c
index 2a84b60..5511a9e 100644
--- a/ed.c
+++ b/ed.c
@@ -1368,7 +1368,6 @@ sighup(int dummy)
static void
edit(void)
{
- setjmp(savesp);
for (;;) {
newcmd = 1;
ocurln = curln;
@@ -1388,8 +1387,6 @@ init(char *fname)
{
size_t len;
- if (setjmp(savesp))
- return;
setscratch();
if (!fname)
return;
@@ -1418,11 +1415,12 @@ main(int argc, char *argv[])
if (argc > 1)
usage();
- signal(SIGINT, sigintr);
- signal(SIGHUP, sighup);
- signal(SIGQUIT, SIG_IGN);
-
- init(*argv);
+ if (!setjmp(savesp)) {
+ signal(SIGINT, sigintr);
+ signal(SIGHUP, sighup);
+ signal(SIGQUIT, SIG_IGN);
+ init(*argv);
+ }
edit();
/* not reached */