H. Verbeet : server: Calling ResumeThread() on a terminated thread is valid .
Alexandre Julliard
julliard at winehq.org
Wed Jul 23 07:09:47 CDT 2008
Module: wine
Branch: master
Commit: ff870e01322298c8b2f646531f0f8875fd8e4ebb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ff870e01322298c8b2f646531f0f8875fd8e4ebb
Author: H. Verbeet <hverbeet at gmail.com>
Date: Tue Jul 22 23:54:39 2008 +0200
server: Calling ResumeThread() on a terminated thread is valid.
---
dlls/kernel32/tests/thread.c | 8 ++++++++
server/thread.c | 3 +--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index d1ac617..5c3d99e 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -450,6 +450,7 @@ static VOID test_CreateThread_suspended(void)
{
HANDLE thread;
DWORD threadId;
+ DWORD suspend_count;
int error;
thread = CreateThread(NULL,0,threadFunc2,NULL,
@@ -471,6 +472,13 @@ static VOID test_CreateThread_suspended(void)
if(error!=WAIT_OBJECT_0) {
TerminateThread(thread,1);
}
+
+ suspend_count = SuspendThread(thread);
+ ok(suspend_count == -1, "SuspendThread returned %d, expected -1\n", suspend_count);
+
+ suspend_count = ResumeThread(thread);
+ ok(suspend_count == 0, "ResumeThread returned %d, expected 0\n", suspend_count);
+
ok(CloseHandle(thread)!=0,"CloseHandle failed\n");
}
diff --git a/server/thread.c b/server/thread.c
index 4929b4a..0c496db 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -1160,8 +1160,7 @@ DECL_HANDLER(resume_thread)
if ((thread = get_thread_from_handle( req->handle, THREAD_SUSPEND_RESUME )))
{
- if (thread->state == TERMINATED) set_error( STATUS_ACCESS_DENIED );
- else reply->count = resume_thread( thread );
+ reply->count = resume_thread( thread );
release_object( thread );
}
}
More information about the wine-cvs
mailing list