aboutsummaryrefslogtreecommitdiffstats
path: root/encoding.c
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-03 14:31:39 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-03 14:31:39 +0000
commiteefc5a86a8c551989bd51a0cf639d227a0a75f1c (patch)
tree94ad4d4fc34cefbc5ec15d10049c5129d1ac4999 /encoding.c
parentf3a7da96b10377508e2cb824b1dff5dc9cd336b5 (diff)
downloadruby-eefc5a86a8c551989bd51a0cf639d227a0a75f1c.tar.gz
Revert "encoding.c (rb_enc_get_index): return -1 for non-encoding capable objects"
* This reverts commit fb253d2032e51f333e6577aa4fcf0c03f9c6fc02. * The CI is failing, this seems a bug in the JSON C extension. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/encoding.c b/encoding.c
index d130eb2612..eac4d7c50a 100644
--- a/encoding.c
+++ b/encoding.c
@@ -793,26 +793,24 @@ rb_enc_get_index(VALUE obj)
obj = rb_sym2str(obj);
}
switch (BUILTIN_TYPE(obj)) {
+ as_default:
+ default:
case T_STRING:
- case T_SYMBOL:
case T_REGEXP:
i = enc_get_index_str(obj);
break;
case T_FILE:
tmp = rb_funcallv(obj, rb_intern("internal_encoding"), 0, 0);
- if (NIL_P(tmp)) {
- tmp = rb_funcallv(obj, rb_intern("external_encoding"), 0, 0);
- }
- if (is_data_encoding(tmp)) {
- i = enc_check_encoding(tmp);
- }
- break;
+ if (NIL_P(tmp)) obj = rb_funcallv(obj, rb_intern("external_encoding"), 0, 0);
+ else obj = tmp;
+ if (NIL_P(obj)) break;
case T_DATA:
if (is_data_encoding(obj)) {
i = enc_check_encoding(obj);
}
- break;
- default:
+ else {
+ goto as_default;
+ }
break;
}
return i;