summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-23 05:23:02 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-23 05:23:02 +0000
commitae2370fb50bb66cbece2cf2f338b1569b631353f (patch)
tree2558a42414a1135a2612857ece1da4068b555ef2 /win32
parent38c8efbe2d24fdf5762beeda1075331dc5a5253e (diff)
* signal.c (sighandler): need to tell to be interrupted to main
context when handler is installed. * win32/win32.[ch] (rb_win32_interrupted): new function to listen interrupt. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r--win32/win32.c8
-rw-r--r--win32/win32.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/win32/win32.c b/win32/win32.c
index 30957cd211..19ee473281 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -3323,6 +3323,12 @@ setup_call(CONTEXT* ctx, struct handler_arg_t *harg)
#endif
}
+void
+rb_w32_interrupted(void)
+{
+ SetSignal(interrupted_event);
+}
+
int
rb_w32_main_context(int arg, void (*handler)(int))
{
@@ -3334,7 +3340,7 @@ rb_w32_main_context(int arg, void (*handler)(int))
if (GetCurrentThreadId() == main_thread.id) return FALSE;
- SetSignal(interrupted_event);
+ rb_w32_interrupted();
RUBY_CRITICAL({ /* the main thread must be in user state */
CONTEXT ctx;
diff --git a/win32/win32.h b/win32/win32.h
index 48646da7a3..e74dbc7653 100644
--- a/win32/win32.h
+++ b/win32/win32.h
@@ -531,6 +531,7 @@ int rb_w32_times(struct tms *);
/* thread stuff */
HANDLE GetCurrentThreadHandle(void);
+void rb_w32_interrupted(void);
int rb_w32_main_context(int arg, void (*handler)(int));
int rb_w32_sleep(unsigned long msec);
void rb_w32_enter_critical(void);