From 4de75b5a6f83d7714c5736477376eda399ef1d01 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 2 Aug 2005 09:55:40 +0000 Subject: [PATCH] Use the new RtlExitUserThread function instead of exporting wine_server_exit_thread. --- dlls/kernel/thread.c | 6 +----- dlls/ntdll/ntdll.spec | 3 +-- dlls/ntdll/ntdll_misc.h | 1 + dlls/ntdll/server.c | 4 ++-- dlls/ntdll/thread.c | 10 ++++++++++ include/wine/server.h | 1 - include/winternl.h | 1 + 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/dlls/kernel/thread.c b/dlls/kernel/thread.c index 5ddbb3378fa..ee3e601c6ae 100644 --- a/dlls/kernel/thread.c +++ b/dlls/kernel/thread.c @@ -248,11 +248,7 @@ void WINAPI ExitThread( DWORD code ) /* [in] Exit code for this thread */ LdrShutdownProcess(); exit( code ); } - else - { - LdrShutdownThread(); - wine_server_exit_thread( code ); - } + else RtlExitUserThread( code ); } diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 7bb07a82e58..a6fabac8081 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -568,7 +568,7 @@ @ stdcall RtlEqualString(ptr ptr long) @ stdcall RtlEqualUnicodeString(ptr ptr long) @ stdcall RtlEraseUnicodeString(ptr) -# @ stub RtlExitUserThread +@ stdcall RtlExitUserThread(long) @ stdcall RtlExpandEnvironmentStrings_U(ptr ptr ptr ptr) @ stub RtlExtendHeap @ stdcall -ret64 RtlExtendedIntegerMultiply(long long long) @@ -1384,7 +1384,6 @@ @ cdecl wine_server_handle_to_fd(long long ptr ptr) @ cdecl wine_server_release_fd(long long) @ cdecl wine_server_send_fd(long) -@ cdecl wine_server_exit_thread(long) # Codepages @ cdecl __wine_init_codepages(ptr ptr ptr) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 4d61169bf3e..dbbcefa6353 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -59,6 +59,7 @@ extern void server_init_process(void); extern size_t server_init_thread( int unix_pid, int unix_tid, void *entry_point ); extern void DECLSPEC_NORETURN server_protocol_error( const char *err, ... ); extern void DECLSPEC_NORETURN server_protocol_perror( const char *err ); +extern void DECLSPEC_NORETURN server_exit_thread( int status ); extern void DECLSPEC_NORETURN server_abort_thread( int status ); /* module handling */ diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index 8c0ee8ea144..35f11875850 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -119,9 +119,9 @@ static void fatal_perror( const char *err, ... ) /*********************************************************************** - * wine_server_exit_thread (NTDLL.@) + * server_exit_thread */ -void wine_server_exit_thread( int status ) +void server_exit_thread( int status ) { struct wine_pthread_thread_info info; ULONG size; diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 80c391f2802..481d2082a65 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -343,6 +343,16 @@ error: } +/*********************************************************************** + * RtlExitUserThread (NTDLL.@) + */ +void WINAPI RtlExitUserThread( ULONG status ) +{ + LdrShutdownThread(); + server_exit_thread( status ); +} + + /*********************************************************************** * NtOpenThread (NTDLL.@) * ZwOpenThread (NTDLL.@) diff --git a/include/wine/server.h b/include/wine/server.h index f30cdf7f617..aa83cac9db8 100644 --- a/include/wine/server.h +++ b/include/wine/server.h @@ -54,7 +54,6 @@ extern void wine_server_send_fd( int fd ); extern int wine_server_fd_to_handle( int fd, unsigned int access, int inherit, obj_handle_t *handle ); extern int wine_server_handle_to_fd( obj_handle_t handle, unsigned int access, int *unix_fd, int *flags ); extern void wine_server_release_fd( obj_handle_t handle, int unix_fd ); -extern void DECLSPEC_NORETURN wine_server_exit_thread( int status ); /* do a server call and set the last error code */ inline static unsigned int wine_server_call_err( void *req_ptr ) diff --git a/include/winternl.h b/include/winternl.h index 090f8b56986..ee582be9bc8 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1985,6 +1985,7 @@ BOOL WINAPI RtlEqualPrefixSid(PSID,PSID); BOOL WINAPI RtlEqualSid(PSID,PSID); BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN); BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); +void WINAPI RtlExitUserThread(ULONG) DECLSPEC_NORETURN; NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*); LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT); LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);