From 782576a5199264be07fd9d5be1629eca4aa92c7d Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 4 Dec 2008 04:57:58 +0000 Subject: * ext/curses/curses.c (window_getch): avoid ISPRINT() macro which has an issue with OpenSolaris. [ruby-core:20189] * signal.c (ruby_signal): EINVAL from sigaction(2) is not a bug. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ ext/curses/curses.c | 2 +- signal.c | 8 ++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5893279db6..e0f55f38a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Dec 4 13:56:31 2008 Yukihiro Matsumoto + + * ext/curses/curses.c (window_getch): avoid ISPRINT() macro which + has an issue with OpenSolaris. [ruby-core:20189] + + * signal.c (ruby_signal): EINVAL from sigaction(2) is not a bug. + Thu Dec 4 11:40:56 2008 Akinori MUSHA * enumerator.c (inspect_enumerator): Implement #inspect. diff --git a/ext/curses/curses.c b/ext/curses/curses.c index 9f4e02ef42..4187478894 100644 --- a/ext/curses/curses.c +++ b/ext/curses/curses.c @@ -416,7 +416,7 @@ curses_getch(VALUE obj) curses_stdscr(); c = getch(); if (c == EOF) return Qnil; - if (ISPRINT(c)) { + if (rb_isprint(c)) { char ch = (char)c; return rb_locale_str_new(&ch, 1); diff --git a/signal.c b/signal.c index cb2fcb3557..91aa7c418e 100644 --- a/signal.c +++ b/signal.c @@ -15,6 +15,7 @@ #include "vm_core.h" #include #include +#include #ifdef _WIN32 typedef LONG rb_atomic_t; @@ -474,8 +475,11 @@ ruby_signal(int signum, sighandler_t handler) if (signum == SIGSEGV) sigact.sa_flags |= SA_ONSTACK; #endif - if (sigaction(signum, &sigact, &old) < 0) - rb_bug("sigaction error.\n"); + if (sigaction(signum, &sigact, &old) < 0) { + if (errno != 0 && errno != EINVAL) { + rb_bug("sigaction error.\n"); + } + } return old.sa_handler; } -- cgit v1.2.3