From be5b7f61307c6caaafb7a760b29f3c2b3dee9dfb Mon Sep 17 00:00:00 2001 From: normal Date: Wed, 25 Feb 2015 09:17:17 +0000 Subject: [PATCH] signal.c: preserve errno * signal.c (sighandler): preserve errno Patch by Steven Stewart-Gallus [ruby-core:68172] [Bug #10866] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ signal.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index df5bdadece..ed7c146799 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Feb 25 18:12:11 2015 Eric Wong + + * signal.c (sighandler): preserve errno + Patch by Steven Stewart-Gallus + [ruby-core:68172] [Bug #10866] + Wed Feb 25 15:59:35 2015 Nobuyoshi Nakada * dir.c (push_pattern, push_glob): make globbed file names same diff --git a/signal.c b/signal.c index f64c24c599..fcfed8d42e 100644 --- a/signal.c +++ b/signal.c @@ -691,11 +691,15 @@ signal_enque(int sig) static RETSIGTYPE sighandler(int sig) { + int old_errnum = errno; + signal_enque(sig); rb_thread_wakeup_timer_thread(); #if !defined(BSD_SIGNAL) && !defined(POSIX_SIGNAL) ruby_signal(sig, sighandler); #endif + + errno = old_errnum; } int