diff options
| author | Kouhei Sutou <[email protected]> | 2018-06-19 17:27:34 +0900 |
|---|---|---|
| committer | Kouhei Sutou <[email protected]> | 2018-06-19 17:27:34 +0900 |
| commit | 33c8c8f8a62c4fb00f30e4a4554ed4a912c69b7b (patch) | |
| tree | 011d9966b3b3ff0342bbd28a31e2e3c4fe5e4e99 /mrbgems/mruby-io/src | |
| parent | a9abf65f033b080cae018c5f4a9b4987e2138af6 (diff) | |
| download | mruby-33c8c8f8a62c4fb00f30e4a4554ed4a912c69b7b.tar.gz mruby-33c8c8f8a62c4fb00f30e4a4554ed4a912c69b7b.zip | |
Stop to use freed value
Diffstat (limited to 'mrbgems/mruby-io/src')
| -rw-r--r-- | mrbgems/mruby-io/src/file.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c index 3dcfe3a0b..2daa3294a 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); } |
