From 1a2ef6bae3c0db71adbbe9e871ca87a87b4d647c Mon Sep 17 00:00:00 2001 From: kosaki Date: Fri, 18 May 2012 08:47:54 +0000 Subject: [PATCH] * thread_pthread.c (rb_thread_create_timer_thread): Added error check when failing fcntl(). [Bug #6147] [ruby-dev:45364] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ thread_pthread.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 40e7c95c8b..ad904455ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri May 18 17:39:42 2012 KOSAKI Motohiro + + * thread_pthread.c (rb_thread_create_timer_thread): Added error + check when failing fcntl(). [Bug #6147] [ruby-dev:45364] + Fri May 18 17:41:00 2012 Nobuyoshi Nakada * ext/extmk.rb (extmake): link archives only, skip script only diff --git a/thread_pthread.c b/thread_pthread.c index 89b05e59da..bfff385292 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -1252,14 +1252,18 @@ rb_thread_create_timer_thread(void) } rb_update_max_fd(timer_thread_pipe[0]); rb_update_max_fd(timer_thread_pipe[1]); -#if defined(HAVE_FCNTL) && defined(F_GETFL) && defined(F_SETFL) +#if defined(HAVE_FCNTL) && defined(F_GETFL) && defined(F_SETFL) && defined(O_NONBLOCK) { int oflags; -#if defined(O_NONBLOCK) + int err; + oflags = fcntl(timer_thread_pipe[1], F_GETFL); + if (oflags == -1) + rb_sys_fail(0); oflags |= O_NONBLOCK; - fcntl(timer_thread_pipe[1], F_SETFL, oflags); -#endif /* defined(O_NONBLOCK) */ + err = fcntl(timer_thread_pipe[1], F_SETFL, oflags); + if (err == -1) + rb_sys_fail(0); } #endif /* defined(HAVE_FCNTL) && defined(F_GETFL) && defined(F_SETFL) */