diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-05-24 04:34:26 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-05-24 04:34:26 +0000 |
commit | 8b1de0b1ad49733abeddd8be359ae816b29de59a (patch) | |
tree | a7ed03dd3f6442635f694c4367bcd94be57f6dbd /dir.c | |
parent | 24b9bdca25dc431aff935df7739b9c5ea0ee4077 (diff) |
2000-05-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -241,10 +241,6 @@ dir_s_new(argc, argv, klass) rb_obj_call_init(obj, argc, argv); - if (rb_iterator_p()) { - rb_ensure(rb_yield, obj, dir_close, obj); - } - return obj; } @@ -268,6 +264,7 @@ dir_initialize(dir, dirname) } } DATA_PTR(dir) = dirp; + return dir; } @@ -275,7 +272,13 @@ static VALUE dir_s_open(klass, dirname) VALUE klass, dirname; { - return dir_s_new(1, &dirname, klass); + VALUE dir = dir_s_new(1, &dirname, klass); + if (rb_block_given_p()) { + rb_ensure(rb_yield, dir, dir_close, dir); + return Qnil; + } + + return dir; } static void @@ -760,7 +763,7 @@ dir_s_glob(dir, str) } if (buf != buffer) free(buf); - if (rb_iterator_p()) { + if (rb_block_given_p()) { long len = RARRAY(ary)->len; VALUE *ptr = RARRAY(ary)->ptr; |