server: Make sure that last error doesn't get set during thread cleanup.

This commit is contained in:
Alexandre Julliard 2009-12-01 15:10:23 +01:00
parent 60efdd55ea
commit e4faa12900
3 changed files with 9 additions and 4 deletions

View File

@ -30,6 +30,7 @@
#define WIN32_NO_STATUS
#include "request.h"
#include "object.h"
#include "process.h"
#include "user.h"
#include "winuser.h"
#include "winternl.h"
@ -112,9 +113,10 @@ static struct clipboard *get_process_clipboard(void)
void cleanup_clipboard_thread(struct thread *thread)
{
struct clipboard *clipboard;
struct winstation *winstation = get_process_winstation( thread->process, WINSTA_ACCESSCLIPBOARD );
struct winstation *winstation;
if (!winstation) return;
if (!thread->process->winstation) return;
if (!(winstation = get_process_winstation( thread->process, WINSTA_ACCESSCLIPBOARD ))) return;
if ((clipboard = winstation->clipboard))
{

View File

@ -114,9 +114,10 @@ static struct hook_table *alloc_hook_table(void)
static struct hook_table *get_global_hooks( struct thread *thread )
{
struct hook_table *table;
struct desktop *desktop = get_thread_desktop( thread, 0 );
struct desktop *desktop;
if (!desktop) return NULL;
if (!thread->desktop) return NULL;
if (!(desktop = get_thread_desktop( thread, 0 ))) return NULL;
table = desktop->global_hooks;
release_object( desktop );
return table;

View File

@ -632,6 +632,8 @@ static void process_killed( struct process *process )
handles = process->handles;
process->handles = NULL;
if (handles) release_object( handles );
process->winstation = 0;
process->desktop = 0;
/* close the console attached to this process, if any */
free_console( process );