ntdll: Set the thread exit code when a thread is killed inside a wait.
This commit is contained in:
parent
89eaa56a2f
commit
6d2063f41b
|
@ -807,7 +807,7 @@ static int wait_reply( void *cookie )
|
|||
ret = read( ntdll_get_thread_data()->wait_fd[0], &reply, sizeof(reply) );
|
||||
if (ret == sizeof(reply))
|
||||
{
|
||||
if (!reply.cookie) break; /* thread got killed */
|
||||
if (!reply.cookie) abort_thread( reply.signaled ); /* thread got killed */
|
||||
if (wine_server_get_ptr(reply.cookie) == cookie) return reply.signaled;
|
||||
/* we stole another reply, wait for the real one */
|
||||
signaled = wait_reply( cookie );
|
||||
|
@ -826,8 +826,6 @@ static int wait_reply( void *cookie )
|
|||
if (errno == EINTR) continue;
|
||||
server_protocol_perror("wakeup read");
|
||||
}
|
||||
/* the server closed the connection; time to die... */
|
||||
abort_thread(0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -986,7 +986,7 @@ void kill_thread( struct thread *thread, int violent_death )
|
|||
if (thread->wait)
|
||||
{
|
||||
while (thread->wait) end_wait( thread );
|
||||
send_thread_wakeup( thread, 0, STATUS_PENDING );
|
||||
send_thread_wakeup( thread, 0, thread->exit_code );
|
||||
/* if it is waiting on the socket, we don't need to send a SIGQUIT */
|
||||
violent_death = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue