Diff

Differences From Artifact [0d20ecce41]:

To Artifact [7fa93fca98]:


164
165
166
167
168
169
170

171
172
173
174
175

176
177
178
179
180
181
182

static void sigchld_handler(int signum)
{
    int save_errno = errno;
    pid_t pid;
    int status;


    pid = waitpid(-1, &status, WNOHANG);
    if (pid == pty_child_pid && (WIFEXITED(status) || WIFSIGNALED(status))) {
	pty_exit_code = status;
	pty_child_dead = TRUE;
    }

    errno = save_errno;
}

static void fatal_sig_handler(int signum)
{
    putty_signal(signum, SIG_DFL);
    cleanup_utmp();







>
|
|
|
|
|
>







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

static void sigchld_handler(int signum)
{
    int save_errno = errno;
    pid_t pid;
    int status;

    do {
	pid = waitpid(-1, &status, WNOHANG);
	if (pid == pty_child_pid && (WIFEXITED(status) || WIFSIGNALED(status))) {
	    pty_exit_code = status;
	    pty_child_dead = TRUE;
	}
    } while(pid > 0);
    errno = save_errno;
}

static void fatal_sig_handler(int signum)
{
    putty_signal(signum, SIG_DFL);
    cleanup_utmp();