Alexandre Julliard : ntdll: Set the thread exit code when a thread is killed inside a wait.

Alexandre Julliard julliard at winehq.org
Mon Jan 16 13:01:32 CST 2012


Module: wine
Branch: master
Commit: 6d2063f41b5774f15ee399069962e5844357e755
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6d2063f41b5774f15ee399069962e5844357e755

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jan 16 14:04:39 2012 +0100

ntdll: Set the thread exit code when a thread is killed inside a wait.

---

 dlls/ntdll/sync.c |    4 +---
 server/thread.c   |    2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index 3e27d09..f759ce6 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -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);
 }
 
 
diff --git a/server/thread.c b/server/thread.c
index f704473..f9a575e 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -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;
     }




More information about the wine-cvs mailing list