summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-io
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-12-12 22:27:25 +0900
committerGitHub <[email protected]>2017-12-12 22:27:25 +0900
commit346ebfb0ea6ecd259af91c136e37280ea0296020 (patch)
tree98188d215d39d617b7adef690305903f0362b69e /mrbgems/mruby-io
parent25bee356b1d485f6f06fdbe1836d4512947f5443 (diff)
parent17cd7a65e7e91e4397dbbf0de0d77f78990aa6a2 (diff)
downloadmruby-346ebfb0ea6ecd259af91c136e37280ea0296020.tar.gz
mruby-346ebfb0ea6ecd259af91c136e37280ea0296020.zip
Merge pull request #3882 from mattn/fix-filename
use filename in locale
Diffstat (limited to 'mrbgems/mruby-io')
-rw-r--r--mrbgems/mruby-io/src/io.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c
index b3166b11b..99ddf4e39 100644
--- a/mrbgems/mruby-io/src/io.c
+++ b/mrbgems/mruby-io/src/io.c
@@ -557,6 +557,7 @@ mrb_cloexec_open(mrb_state *mrb, const char *pathname, mrb_int flags, mrb_int mo
{
mrb_value emsg;
int fd, retry = FALSE;
+ char* fname = mrb_locale_from_utf8(pathname, -1);
#ifdef O_CLOEXEC
/* O_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */
@@ -565,7 +566,7 @@ mrb_cloexec_open(mrb_state *mrb, const char *pathname, mrb_int flags, mrb_int mo
flags |= O_NOINHERIT;
#endif
reopen:
- fd = open(pathname, (int)flags, mode);
+ fd = open(fname, (int)flags, mode);
if (fd == -1) {
if (!retry) {
switch (errno) {
@@ -581,6 +582,7 @@ reopen:
mrb_str_modify(mrb, mrb_str_ptr(emsg));
mrb_sys_fail(mrb, RSTRING_PTR(emsg));
}
+ mrb_utf8_free(fname);
if (fd <= 2) {
mrb_fd_cloexec(mrb, fd);