* 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:
akr 2006-06-21 20:19:07 +00:00
Родитель 274ae70db2
Коммит b77a4e2a4e
2 изменённых файлов: 14 добавлений и 7 удалений

Просмотреть файл

@ -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)");
}