mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/socket/socket.c (sock_s_socketpair): try GC only once.
[ruby-dev:28778] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10362 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
274ae70db2
commit
b77a4e2a4e
2 changed files with 14 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
|||
Thu Jun 22 05:15:58 2006 Tanaka Akira <akr@m17n.org>
|
||||
|
||||
* ext/socket/socket.c (sock_s_socketpair): try GC only once.
|
||||
[ruby-dev:28778]
|
||||
|
||||
Wed Jun 21 21:20:31 2006 Tadayoshi Funaba <tadf@dotrb.org>
|
||||
|
||||
* lib/date.rb (jd_to_commercial): now works fine even if in
|
||||
|
|
|
@ -2239,15 +2239,17 @@ static VALUE
|
|||
sock_s_socketpair(VALUE klass, VALUE domain, VALUE type, VALUE protocol)
|
||||
{
|
||||
#if defined HAVE_SOCKETPAIR
|
||||
int d, t, sp[2];
|
||||
int d, t, p, sp[2];
|
||||
int ret;
|
||||
|
||||
setup_domain_and_type(domain, &d, type, &t);
|
||||
again:
|
||||
if (socketpair(d, t, NUM2INT(protocol), sp) < 0) {
|
||||
if (errno == EMFILE || errno == ENFILE) {
|
||||
rb_gc();
|
||||
goto again;
|
||||
}
|
||||
p = NUM2INT(protocol);
|
||||
ret = socketpair(d, t, p, sp);
|
||||
if (ret < 0 && (errno == EMFILE || errno == ENFILE)) {
|
||||
rb_gc();
|
||||
ret = socketpair(d, t, p, sp);
|
||||
}
|
||||
if (ret < 0) {
|
||||
rb_sys_fail("socketpair(2)");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue