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