aboutsummaryrefslogtreecommitdiffstats
path: root/encoding.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-12-03 08:13:26 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-12-03 08:13:26 +0000
commitaacc35e144f2a3d5c145f85e337accd55a8acc90 (patch)
tree11c7af24794357a7a0fdfac687fe187067cf13d9 /encoding.c
parent638ba47303dbc54ea84147cbb21935b251f670da (diff)
downloadruby-aacc35e144f2a3d5c145f85e337accd55a8acc90.tar.gz
encoding.c: load by rb_require_internal
* encoding.c (load_encoding): use rb_require_internal instead of calling rb_require_safe with protection. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/encoding.c b/encoding.c
index a3514dff5e..b90d83a4c6 100644
--- a/encoding.c
+++ b/encoding.c
@@ -629,13 +629,6 @@ rb_enc_registered(const char *name)
return -1;
}
-static VALUE
-require_enc(VALUE enclib)
-{
- int safe = rb_safe_level();
- return rb_require_safe(enclib, safe > 3 ? 3 : safe);
-}
-
static int
load_encoding(const char *name)
{
@@ -643,8 +636,8 @@ load_encoding(const char *name)
VALUE verbose = ruby_verbose;
VALUE debug = ruby_debug;
VALUE errinfo;
- VALUE loaded;
char *s = RSTRING_PTR(enclib) + 4, *e = RSTRING_END(enclib) - 3;
+ int loaded;
int idx;
while (s < e) {
@@ -657,11 +650,11 @@ load_encoding(const char *name)
ruby_verbose = Qfalse;
ruby_debug = Qfalse;
errinfo = rb_errinfo();
- loaded = rb_protect(require_enc, enclib, 0);
+ loaded = rb_require_internal(enclib, rb_safe_level());
ruby_verbose = verbose;
ruby_debug = debug;
rb_set_errinfo(errinfo);
- if (NIL_P(loaded)) return -1;
+ if (loaded < 0 || 1 < loaded) return -1;
if ((idx = rb_enc_registered(name)) < 0) return -1;
if (enc_autoload_p(enc_table.list[idx].enc)) return -1;
return idx;