commit 651e2b0ee2bae4826c9cc9f1215cd57965676bdf
Author:     Roberto E. Vargas Caballero <k...@shike2.com>
AuthorDate: Sun Mar 4 11:58:07 2018 +0100
Commit:     sin <s...@2f30.org>
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 */

Reply via email to