diff options
author | shirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-01-28 00:51:36 +0000 |
---|---|---|
committer | shirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-01-28 00:51:36 +0000 |
commit | 494fd237f00f166cf024a51fd04e064fc94e0f82 (patch) | |
tree | 0d563ac03cdec19e41698dcd2a8a23eca2872308 | |
parent | 11de7c034ba07d1ca2f66870f47376dd2cba56e6 (diff) | |
download | ruby-494fd237f00f166cf024a51fd04e064fc94e0f82.tar.gz |
* thread_win32.c (rb_w32_wait_events_blocking): use
ruby_thread_from_native() instead of GET_THREAD() because
GET_THREAD() doesn't always return the current thread and
WaitForMultipleObjects() at rb_w32_read() doesn't return by
Thread#kill. This fixes TestQueue#test_thr_kill failure on
Windows.
* thread_win32.c (rb_w32_wait_events): use ruby_thread_from_native()
instead of GET_THREAD() for consistency with the above change.
* thread_win32.c (rb_w32_sleep): ditto.
* thread_win32.c (rb_w32_Sleep): ditto.
[ruby-dev:45149] [Bug #5812]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | thread_win32.c | 8 |
2 files changed, 21 insertions, 4 deletions
@@ -1,3 +1,20 @@ +Sat Jan 28 07:46:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com> + + * thread_win32.c (rb_w32_wait_events_blocking): use + ruby_thread_from_native() instead of GET_THREAD() because + GET_THREAD() doesn't always return the current thread and + WaitForMultipleObjects() at rb_w32_read() doesn't return by + Thread#kill. This fixes TestQueue#test_thr_kill failure on + Windows. + + * thread_win32.c (rb_w32_wait_events): use ruby_thread_from_native() + instead of GET_THREAD() for consistency with the above change. + + * thread_win32.c (rb_w32_sleep): ditto. + + * thread_win32.c (rb_w32_Sleep): ditto. + [ruby-dev:45149] [Bug #5812] + Sat Jan 28 07:28:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com> * test/zlib/test_zlib.rb (TestZlibGzipReader#test_reader_wrap): set diff --git a/thread_win32.c b/thread_win32.c index 873d37d7b5..da971e70de 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -231,7 +231,7 @@ static void ubf_handle(void *ptr); int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout) { - return w32_wait_events(events, num, timeout, GET_THREAD()); + return w32_wait_events(events, num, timeout, ruby_thread_from_native()); } int @@ -240,7 +240,7 @@ rb_w32_wait_events(HANDLE *events, int num, DWORD timeout) int ret; BLOCKING_REGION(ret = rb_w32_wait_events_blocking(events, num, timeout), - ubf_handle, GET_THREAD()); + ubf_handle, ruby_thread_from_native()); return ret; } @@ -285,7 +285,7 @@ w32_create_thread(DWORD stack_size, w32_thread_start_func func, void *val) int rb_w32_sleep(unsigned long msec) { - return w32_wait_events(0, 0, msec, GET_THREAD()); + return w32_wait_events(0, 0, msec, ruby_thread_from_native()); } int WINAPI @@ -294,7 +294,7 @@ rb_w32_Sleep(unsigned long msec) int ret; BLOCKING_REGION(ret = rb_w32_sleep(msec), - ubf_handle, GET_THREAD()); + ubf_handle, ruby_thread_from_native()); return ret; } |