[2/2] server: A being destroyed object may need to access other objects using a handle.

Dmitry Timoshkov dmitry at baikal.ru
Fri May 24 02:58:03 CDT 2013


A valid winstation handle is needed during clipboard thread clean up.
---
 dlls/kernel32/tests/process.c | 1 -
 server/handle.c               | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 350c858..88dcfbb 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -1957,7 +1957,6 @@ static void test_TerminateProcess(void)
 
     SetLastError(0xdeadbeef);
     ret = TerminateProcess(pi.hProcess, 0);
-todo_wine
     ok(ret, "TerminateProcess error %u\n", GetLastError());
 
     CloseHandle(pi.hProcess);
diff --git a/server/handle.c b/server/handle.c
index 1d8087b..5dc4187 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -165,7 +165,6 @@ static void handle_table_destroy( struct object *obj )
     for (i = 0, entry = table->entries; i <= table->last; i++, entry++)
     {
         struct object *obj = entry->ptr;
-        entry->ptr = NULL;
         if (obj) release_object( obj );
     }
     free( table->entries );
@@ -176,8 +175,8 @@ void close_process_handles( struct process *process )
 {
     struct handle_table *table = process->handles;
 
-    process->handles = NULL;
     if (table) release_object( table );
+    process->handles = NULL;
 }
 
 /* allocate a new handle table */
-- 
1.8.2.3




More information about the wine-patches mailing list