summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-io/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-06-19 19:33:37 +0900
committerGitHub <[email protected]>2018-06-19 19:33:37 +0900
commit5e7ced0785790a3070bc81e8b2fd2326151c31b9 (patch)
tree1e9bba64bfe31184dafa6b56658a780733828f16 /mrbgems/mruby-io/src
parent47413d050743c8ec1b70154f0962431ed385f0e3 (diff)
parent33c8c8f8a62c4fb00f30e4a4554ed4a912c69b7b (diff)
downloadmruby-5e7ced0785790a3070bc81e8b2fd2326151c31b9.tar.gz
mruby-5e7ced0785790a3070bc81e8b2fd2326151c31b9.zip
Merge pull request #4047 from kou/stop-to-use-freed-value
Stop to use freed value
Diffstat (limited to 'mrbgems/mruby-io/src')
-rw-r--r--mrbgems/mruby-io/src/file.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c
index b3ad49297..e5cf53488 100644
--- a/mrbgems/mruby-io/src/file.c
+++ b/mrbgems/mruby-io/src/file.c
@@ -114,11 +114,13 @@ mrb_file_s_unlink(mrb_state *mrb, mrb_value obj)
mrb_get_args(mrb, "*", &argv, &argc);
for (i = 0; i < argc; i++) {
+ const char *utf8_path;
pathv = mrb_convert_type(mrb, argv[i], MRB_TT_STRING, "String", "to_str");
- path = mrb_locale_from_utf8(mrb_string_value_cstr(mrb, &pathv), -1);
+ utf8_path = mrb_string_value_cstr(mrb, &pathv);
+ path = mrb_locale_from_utf8(utf8_path, -1);
if (UNLINK(path) < 0) {
mrb_locale_free(path);
- mrb_sys_fail(mrb, path);
+ mrb_sys_fail(mrb, utf8_path);
}
mrb_locale_free(path);
}
@@ -415,10 +417,11 @@ mrb_file_s_chmod(mrb_state *mrb, mrb_value klass) {
mrb_get_args(mrb, "i*", &mode, &filenames, &argc);
for (i = 0; i < argc; i++) {
- char *path = mrb_locale_from_utf8(mrb_str_to_cstr(mrb, filenames[i]), -1);
+ const char *utf8_path = mrb_str_to_cstr(mrb, filenames[i]);
+ char *path = mrb_locale_from_utf8(utf8_path, -1);
if (CHMOD(path, mode) == -1) {
mrb_locale_free(path);
- mrb_sys_fail(mrb, path);
+ mrb_sys_fail(mrb, utf8_path);
}
mrb_locale_free(path);
}