summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/dir.c b/dir.c
index 4c380e6b98..17c6515484 100644
--- a/dir.c
+++ b/dir.c
@@ -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);
}
}