diff --git a/ChangeLog b/ChangeLog index b3b4d4d8da..878498f76e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Apr 9 10:03:12 2016 Nobuyoshi Nakada + + * load.c (rb_f_load): raise with the original path name before + encoding conversion. + Sat Apr 9 02:05:10 2016 Nobuyoshi Nakada * bignum.c (rb_cstr_parse_inum): [EXPERIMENTAL] new function to diff --git a/load.c b/load.c index a3b32d4389..fc2e44b7c2 100644 --- a/load.c +++ b/load.c @@ -698,13 +698,16 @@ static VALUE rb_f_load(int argc, VALUE *argv) { VALUE fname, wrap, path, orig_fname; + int safe; rb_scan_args(argc, argv, "11", &fname, &wrap); RUBY_DTRACE_HOOK(LOAD_ENTRY, StringValuePtr(fname)); - orig_fname = FilePathValue(fname); - fname = rb_str_encode_ospath(orig_fname); + safe = rb_safe_level(); + orig_fname = rb_get_path_check_to_string(fname, safe); + fname = rb_get_path_check_convert(fname, orig_fname, safe); + fname = rb_str_encode_ospath(fname); path = rb_find_file(fname); if (!path) { if (!rb_file_load_ok(RSTRING_PTR(fname)))