diff options
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -83,8 +83,9 @@ dir_s_open(dir_class, dirname) obj = Data_Wrap_Struct(dir_class, 0, free_dir, dirp); - if (iterator_p()) + if (iterator_p()) { rb_ensure(rb_yield, obj, dir_close, obj); + } return obj; } @@ -112,9 +113,10 @@ dir_read(dir) dp = readdir(dirp); if (dp) return str_taint(str_new(dp->d_name, NAMLEN(dp))); + else if (errno == 0) { /* end of stream */ + return Qnil; + } else { - if (errno == 0) /* end of stream */ - return Qnil; rb_sys_fail(0); } } |