about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-06-15 02:34:49 +0000
committerEric Wong <normalperson@yhbt.net>2011-06-15 02:34:49 +0000
commit6d6f704e29d7bf1e95f1c9c60cbab82ec3d430d2 (patch)
tree9df3920d41638aa37aa3bf9ffdfec5fb98aef595
parente693b871567119345c2c567bfa2ad46e210d655b (diff)
downloadkgio-6d6f704e29d7bf1e95f1c9c60cbab82ec3d430d2.tar.gz
It is possible but unlikely to get ENOMEM on open(2),
so try to GC away some files.
-rw-r--r--ext/kgio/tryopen.c2
1 files changed, 1 insertions, 1 deletions
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);