diff options
Diffstat (limited to 'lang/ruby18-base/patches/patch-cf')
-rw-r--r-- | lang/ruby18-base/patches/patch-cf | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lang/ruby18-base/patches/patch-cf b/lang/ruby18-base/patches/patch-cf new file mode 100644 index 00000000000..0994d3409b3 --- /dev/null +++ b/lang/ruby18-base/patches/patch-cf @@ -0,0 +1,42 @@ +$NetBSD: patch-cf,v 1.1 2005/11/02 08:56:40 taca Exp $ + +--- rubysig.h.orig 2004-12-06 17:19:20.000000000 +0900 ++++ rubysig.h +@@ -79,13 +79,12 @@ void rb_trap_restore_mask _((void)); + + RUBY_EXTERN int rb_thread_critical; + void rb_thread_schedule _((void)); +-#if defined(HAVE_SETITIMER) ++#if defined(HAVE_SETITIMER) || defined(_THREAD_SAFE) + RUBY_EXTERN int rb_thread_pending; + # define CHECK_INTS do {\ +- if (!rb_prohibit_interrupt) {\ ++ if (!(rb_prohibit_interrupt || rb_thread_critical)) {\ ++ if (rb_thread_pending) rb_thread_schedule();\ + if (rb_trap_pending) rb_trap_exec();\ +- if (rb_thread_pending && !rb_thread_critical)\ +- rb_thread_schedule();\ + }\ + } while (0) + #else +@@ -93,15 +92,13 @@ RUBY_EXTERN int rb_thread_pending; + RUBY_EXTERN int rb_thread_tick; + #define THREAD_TICK 500 + #define CHECK_INTS do {\ +- if (!rb_prohibit_interrupt) {\ +- if (rb_trap_pending) rb_trap_exec();\ +- if (!rb_thread_critical) {\ +- if (rb_thread_tick-- <= 0) {\ +- rb_thread_tick = THREAD_TICK;\ +- rb_thread_schedule();\ +- }\ ++ if (!(rb_prohibit_interrupt || rb_thread_critical)) {\ ++ if (rb_thread_tick-- <= 0) {\ ++ rb_thread_tick = THREAD_TICK;\ ++ rb_thread_schedule();\ + }\ + }\ ++ if (rb_trap_pending) rb_trap_exec();\ + } while (0) + #endif + |