summaryrefslogtreecommitdiff
path: root/lang/ruby18-base/patches/patch-cf
diff options
context:
space:
mode:
Diffstat (limited to 'lang/ruby18-base/patches/patch-cf')
-rw-r--r--lang/ruby18-base/patches/patch-cf42
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
+