ruby-changes:16642
From: mame <ko1@a...>
Date: Wed, 14 Jul 2010 12:46:39 +0900 (JST)
Subject: [ruby-changes:16642] Ruby:r28636 (ruby_1_9_2): merges r28623 from trunk into ruby_1_9_2.
mame 2010-07-14 12:46:26 +0900 (Wed, 14 Jul 2010) New Revision: 28636 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28636 Log: merges r28623 from trunk into ruby_1_9_2. -- * missing/close.c: keep original errno. Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/missing/close.c Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 28635) +++ ruby_1_9_2/ChangeLog (revision 28636) @@ -1,3 +1,7 @@ +Tue Jul 13 12:04:57 2010 NARUSE, Yui <naruse@r...> + + * missing/close.c: keep original errno. + Thu Jul 8 00:15:50 2010 Yusuke Endoh <mame@t...> * gem_prelude.rb: provide workaround for gem activation. Currently, Index: ruby_1_9_2/missing/close.c =================================================================== --- ruby_1_9_2/missing/close.c (revision 28635) +++ ruby_1_9_2/missing/close.c (revision 28636) @@ -8,12 +8,15 @@ ruby_getpeername(int s, struct sockaddr * name, socklen_t * namelen) { + int err = errno; errno = 0; s = getpeername(s, name, namelen); if (errno == ECONNRESET) { errno = 0; s = 0; } + else if (errno == 0) + errno = err; return s; } @@ -21,35 +24,44 @@ ruby_getsockname(int s, struct sockaddr * name, socklen_t * namelen) { + int err = errno; errno = 0; s = getsockname(s, name, namelen); if (errno == ECONNRESET) { errno = 0; s = 0; } + else if (errno == 0) + errno = err; return s; } int ruby_shutdown(int s, int how) { + int err = errno; errno = 0; s = shutdown(s, how); if (errno == ECONNRESET) { errno = 0; s = 0; } + else if (errno == 0) + errno = err; return s; } int ruby_close(int s) { + int err = errno; errno = 0; s = close(s); if (errno == ECONNRESET) { errno = 0; s = 0; } + else if (errno == 0) + errno = err; return s; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/