diff --git a/ChangeLog b/ChangeLog index dba91a47d7..4d6f8acd02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Feb 22 23:50:26 2005 Nobuyoshi Nakada + + * signal.c (ruby_signal, ruby_nativethread_signal): must be valid as + expressions, not only statements. + Tue Feb 22 07:24:57 2005 Nobuyoshi Nakada * parse.y (parser_yylex): identifier after dot must not be a variable. diff --git a/signal.c b/signal.c index 000fa5a0c2..63cb18cb49 100644 --- a/signal.c +++ b/signal.c @@ -386,9 +386,19 @@ posix_nativethread_signal(signum, handler) } #endif #else /* !POSIX_SIGNAL */ -#define ruby_signal(sig,handler) {rb_trap_accept_nativethreads[sig] = 0; signal((sig),(handler));} +#define ruby_signal(sig,handler) (rb_trap_accept_nativethreads[sig] = 0, signal((sig),(handler))) #ifdef HAVE_NATIVETHREAD -#define ruby_nativethread_signal(sig,handler) {signal((sig),(handler));rb_trap_accept_nativethreads[sig] = 1;} +static sighandler_t +ruby_nativethread_signal(signum, handler) + int signum; + sighandler_t handler; +{ + sighandler_t old; + + old = signal(signum, handler); + rb_trap_accept_nativethreads[signum] = 1; + return old; +} #endif #endif