* file.c (ruby_is_fd_loadable): set proper errno.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52154 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-10-17 23:41:14 +00:00
Родитель d5cb997f18
Коммит d6379666ca
2 изменённых файлов: 4 добавлений и 2 удалений

3
file.c
Просмотреть файл

@ -5683,9 +5683,10 @@ ruby_is_fd_loadable(int fd)
if (S_ISREG(st.st_mode)) if (S_ISREG(st.st_mode))
return 1; return 1;
if (S_ISFIFO(st.st_mode)) if (!S_ISDIR(st.st_mode))
return 1; return 1;
errno = EISDIR;
return 0; return 0;
#endif #endif
} }

3
ruby.c
Просмотреть файл

@ -1803,8 +1803,9 @@ open_load_file(VALUE fname_v, int *xflag)
} }
#endif #endif
if (!ruby_is_fd_loadable(fd)) { if (!ruby_is_fd_loadable(fd)) {
int e = errno;
(void)close(fd); (void)close(fd);
rb_load_fail(fname_v, strerror(errno)); rb_load_fail(fname_v, strerror(e));
} }
f = rb_io_fdopen(fd, mode, fname); f = rb_io_fdopen(fd, mode, fname);