ruby-changes:2565
From: ko1@a...
Date: 30 Nov 2007 23:09:14 +0900
Subject: [ruby-changes:2565] matz - Ruby:r14056 (trunk): * signal.c (trap_signm): SIGVTALRM no longer used for green
matz 2007-11-30 23:08:58 +0900 (Fri, 30 Nov 2007)
New Revision: 14056
Modified files:
trunk/ChangeLog
trunk/eval.c
trunk/include/ruby/intern.h
trunk/signal.c
Log:
* signal.c (trap_signm): SIGVTALRM no longer used for green
thread. [ruby-talk:281318]
* signal.c (ruby_sig_finalize): do not install SIG_DFL handler if
previous handler is sighandler().
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14056&r2=14055
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/eval.c?r1=14056&r2=14055
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/signal.c?r1=14056&r2=14055
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/intern.h?r1=14056&r2=14055
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h (revision 14055)
+++ include/ruby/intern.h (revision 14056)
@@ -474,6 +474,7 @@
#define posix_signal ruby_posix_signal
void posix_signal(int, RETSIGTYPE (*)(int));
#endif
+void ruby_sig_finalize(void);
void rb_trap_exit(void);
void rb_trap_exec(void);
const char *ruby_signal_name(int);
Index: ChangeLog
===================================================================
--- ChangeLog (revision 14055)
+++ ChangeLog (revision 14056)
@@ -1,3 +1,11 @@
+Fri Nov 30 22:52:54 2007 Yukihiro Matsumoto <matz@r...>
+
+ * signal.c (trap_signm): SIGVTALRM no longer used for green
+ thread. [ruby-talk:281318]
+
+ * signal.c (ruby_sig_finalize): do not install SIG_DFL handler if
+ previous handler is sighandler().
+
Fri Nov 30 21:02:15 2007 NARUSE, Yui <naruse@r...>
* lib/json.rb, lib/json/add/{core.rb, rails.rb},
Index: eval.c
===================================================================
--- eval.c (revision 14055)
+++ eval.c (revision 14056)
@@ -143,7 +143,7 @@
static void
ruby_finalize_1(void)
{
- signal(SIGINT, SIG_DFL);
+ ruby_sig_finalize();
GET_THREAD()->errinfo = Qnil;
rb_gc_call_finalizer_at_exit();
}
Index: signal.c
===================================================================
--- signal.c (revision 14055)
+++ signal.c (revision 14056)
@@ -783,12 +783,6 @@
if (sig == 0 && strcmp(s, "EXIT") != 0)
rb_raise(rb_eArgError, "unsupported signal SIG%s", s);
}
-
-#if defined(HAVE_SETITIMER)
- if (sig == SIGVTALRM) {
- rb_raise(rb_eArgError, "SIGVTALRM reserved for Thread; can't set handler");
- }
-#endif
return sig;
}
@@ -993,6 +987,18 @@
#endif
}
+void
+ruby_sig_finalize()
+{
+ sighandler_t oldfunc;
+
+ oldfunc = ruby_signal(SIGINT, SIG_IGN);
+ if (oldfunc == sighandler) {
+ ruby_signal(SIGINT, SIG_DFL);
+ }
+}
+
+
#ifdef RUBY_DEBUG_ENV
int ruby_enable_coredump = 0;
#endif
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml