aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-04-09 01:03:15 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-04-09 01:03:15 +0000
commit56417d1f24ab6f505f431de067d3cfa596600c65 (patch)
treedbb6734b851f47478da812cd29d22990fc652b62
parent7aa83cd0f88743443da35d202a94b64fcadf3b6c (diff)
downloadruby-56417d1f24ab6f505f431de067d3cfa596600c65.tar.gz
load.c: raise name before conversion
* load.c (rb_f_load): raise with the original path name before encoding conversion. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-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)))