diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-06-19 19:33:37 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-06-19 19:33:37 +0900 |
| commit | 5e7ced0785790a3070bc81e8b2fd2326151c31b9 (patch) | |
| tree | 1e9bba64bfe31184dafa6b56658a780733828f16 /mrbgems/mruby-io/src | |
| parent | 47413d050743c8ec1b70154f0962431ed385f0e3 (diff) | |
| parent | 33c8c8f8a62c4fb00f30e4a4554ed4a912c69b7b (diff) | |
| download | mruby-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.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 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); } |
