[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]