ruby-changes:16629
From: naruse <ko1@a...>
Date: Tue, 13 Jul 2010 13:16:36 +0900 (JST)
Subject: [ruby-changes:16629] Ruby:r28623 (trunk): * missing/close.c: keep original errno.
naruse 2010-07-13 13:15:30 +0900 (Tue, 13 Jul 2010) New Revision: 28623 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28623 Log: * missing/close.c: keep original errno. Modified files: trunk/ChangeLog trunk/missing/close.c Index: ChangeLog =================================================================== --- ChangeLog (revision 28622) +++ ChangeLog (revision 28623) @@ -1,3 +1,7 @@ +Tue Jul 13 12:04:57 2010 NARUSE, Yui <naruse@r...> + + * missing/close.c: keep original errno. + Mon Jul 12 01:58:56 2010 Marc-Andre Lafortune <ruby-core@m...> * lib/csv.rb: Fix unused variable warnings. Index: missing/close.c =================================================================== --- missing/close.c (revision 28622) +++ missing/close.c (revision 28623) @@ -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/