server: Make sure that last error doesn't get set during thread cleanup.
This commit is contained in:
parent
60efdd55ea
commit
e4faa12900
|
@ -30,6 +30,7 @@
|
||||||
#define WIN32_NO_STATUS
|
#define WIN32_NO_STATUS
|
||||||
#include "request.h"
|
#include "request.h"
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
|
#include "process.h"
|
||||||
#include "user.h"
|
#include "user.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "winternl.h"
|
#include "winternl.h"
|
||||||
|
@ -112,9 +113,10 @@ static struct clipboard *get_process_clipboard(void)
|
||||||
void cleanup_clipboard_thread(struct thread *thread)
|
void cleanup_clipboard_thread(struct thread *thread)
|
||||||
{
|
{
|
||||||
struct clipboard *clipboard;
|
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))
|
if ((clipboard = winstation->clipboard))
|
||||||
{
|
{
|
||||||
|
|
|
@ -114,9 +114,10 @@ static struct hook_table *alloc_hook_table(void)
|
||||||
static struct hook_table *get_global_hooks( struct thread *thread )
|
static struct hook_table *get_global_hooks( struct thread *thread )
|
||||||
{
|
{
|
||||||
struct hook_table *table;
|
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;
|
table = desktop->global_hooks;
|
||||||
release_object( desktop );
|
release_object( desktop );
|
||||||
return table;
|
return table;
|
||||||
|
|
|
@ -632,6 +632,8 @@ static void process_killed( struct process *process )
|
||||||
handles = process->handles;
|
handles = process->handles;
|
||||||
process->handles = NULL;
|
process->handles = NULL;
|
||||||
if (handles) release_object( handles );
|
if (handles) release_object( handles );
|
||||||
|
process->winstation = 0;
|
||||||
|
process->desktop = 0;
|
||||||
|
|
||||||
/* close the console attached to this process, if any */
|
/* close the console attached to this process, if any */
|
||||||
free_console( process );
|
free_console( process );
|
||||||
|
|
Loading…
Reference in New Issue