Dmitry Timoshkov : server: Fail to set process affinity mask if the process is terminating.

Alexandre Julliard julliard at winehq.org
Tue May 7 15:54:05 CDT 2013


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

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Mon May  6 15:40:34 2013 +0900

server: Fail to set process affinity mask if the process is terminating.

---

 dlls/kernel32/tests/loader.c |    3 +--
 server/process.c             |    6 ++++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index e4176b5..a45235f 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -1958,7 +1958,7 @@ todo_wine
     /* Checking process state without waiting for process termination
      * leads to different results due to a race condition.
      */
-    ret = WaitForSingleObject(pi.hProcess, 100);
+    ret = WaitForSingleObject(pi.hProcess, 1000);
     ok(ret == WAIT_OBJECT_0, "WaitForSingleObject failed: %x\n", ret);
 
     memset(&pbi, 0, sizeof(pbi));
@@ -1967,7 +1967,6 @@ todo_wine
     ok(pbi.ExitStatus == 198, "expected 198, got %lu\n", pbi.ExitStatus);
     affinity = 1;
     ret = pNtSetInformationProcess(pi.hProcess, ProcessAffinityMask, &affinity, sizeof(affinity));
-todo_wine
     ok(ret == STATUS_PROCESS_IS_TERMINATING, "expected STATUS_PROCESS_IS_TERMINATING, got %#x\n", ret);
 
     SetLastError(0xdeadbeef);
diff --git a/server/process.c b/server/process.c
index 89c08dc..61d9d17 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1122,6 +1122,12 @@ static void set_process_affinity( struct process *process, affinity_t affinity )
 {
     struct thread *thread;
 
+    if (!process->running_threads)
+    {
+        set_error( STATUS_PROCESS_IS_TERMINATING );
+        return;
+    }
+
     process->affinity = affinity;
 
     LIST_FOR_EACH_ENTRY( thread, &process->thread_list, struct thread, proc_entry )




More information about the wine-cvs mailing list