From 6d6f704e29d7bf1e95f1c9c60cbab82ec3d430d2 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 15 Jun 2011 02:34:49 +0000 Subject: Kgio::File.tryopen runs GC on ENOMEM It is possible but unlikely to get ENOMEM on open(2), so try to GC away some files. --- ext/kgio/tryopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/kgio/tryopen.c b/ext/kgio/tryopen.c index 82488de..26f1986 100644 --- a/ext/kgio/tryopen.c +++ b/ext/kgio/tryopen.c @@ -99,7 +99,7 @@ static VALUE s_tryopen(int argc, VALUE *argv, VALUE klass) retry: fd = (int)rb_thread_blocking_region(nogvl_open, &o, RUBY_UBF_IO, 0); if (fd == -1) { - if (errno == EMFILE || errno == ENFILE) { + if (errno == EMFILE || errno == ENFILE || errno == ENOMEM) { rb_gc(); if (retried) rb_sys_fail(o.pathname); -- cgit v1.2.3-24-ge0c7