Jacob has pointed out why SIGCHLD was blocked, so I've updated the
[sgt/putty] / unix / pty.c
index b9bd510..bef9f2f 100644 (file)
@@ -621,18 +621,13 @@ static const char *pty_init(void *frontend, void **backend_handle, Config *cfg,
        /*
         * SIGINT and SIGQUIT may have been set to ignored by our
         * parent, particularly by things like sh -c 'pterm &' and
-        * some window managers. SIGCHLD, meanwhile, has been
-        * tinkered with by the watchdog process. Reverse all this
-        * for our child process.
+        * some window managers. SIGCHLD, meanwhile, was blocked
+        * during pt_main() startup. Reverse all this for our child
+        * process.
         */
        putty_signal(SIGINT, SIG_DFL);
        putty_signal(SIGQUIT, SIG_DFL);
-       {
-           sigset_t set;
-           sigemptyset(&set);
-           sigaddset(&set, SIGCHLD);
-           sigprocmask(SIG_UNBLOCK, &set, NULL);
-       }
+       block_signal(SIGCHLD, 0);
        if (pty_argv)
            execvp(pty_argv[0], pty_argv);
        else {