diff options
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -1524,9 +1524,18 @@ load_file_internal(VALUE arg) } #endif if ((fd = rb_cloexec_open(fname, mode, 0)) < 0) { + load_failed: rb_load_fail(fname_v, strerror(errno)); } rb_update_max_fd(fd); + { + struct stat st; + if (fstat(fd, &st) != 0) goto load_failed; + if (S_ISDIR(st.st_mode)) { + errno = EISDIR; + goto load_failed; + } + } f = rb_io_fdopen(fd, mode, fname); } |