summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--load.c7
2 files changed, 10 insertions, 2 deletions
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 <nobu@ruby-lang.org>
+
+ * load.c (rb_f_load): raise with the original path name before
+ encoding conversion.
+
Sat Apr 9 02:05:10 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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)))