diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-02 14:27:56 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-02 14:27:56 +0000 |
commit | 48bc63fa7aadb25f3c0fdaad9c116e9171a8cfad (patch) | |
tree | e5a5d8dba2f7aaea6584720bf3b87a850b891e25 /encoding.c | |
parent | 027a15e9582d62fbd2df7efcdd2e8475be758583 (diff) | |
download | ruby-48bc63fa7aadb25f3c0fdaad9c116e9171a8cfad.tar.gz |
Fix r32811: add UNSPECIFIED_ENCODING case.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r-- | encoding.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/encoding.c b/encoding.c index fca7e1fea6..8e80e8ce66 100644 --- a/encoding.c +++ b/encoding.c @@ -159,6 +159,7 @@ rb_to_encoding_index(VALUE enc) return rb_enc_find_index(StringValueCStr(enc)); } +/* Returns encoding index or UNSPECIFIED_ENCODING */ static int str_to_encindex(VALUE enc) { @@ -596,6 +597,7 @@ enc_autoload(rb_encoding *enc) return i; } +/* Return encoding index or UNSPECIFIED_ENCODING from encoding name */ int rb_enc_find_index(const char *name) { @@ -1051,9 +1053,12 @@ enc_list(VALUE klass) static VALUE enc_find(VALUE klass, VALUE enc) { + int idx; if (!SPECIAL_CONST_P(enc) && BUILTIN_TYPE(enc) == T_DATA && is_data_encoding(enc)) return enc; - return rb_enc_from_encoding_index(str_to_encindex(enc)); + idx = str_to_encindex(enc); + if (idx == UNSPECIFIED_ENCODING) return Qnil; + return rb_enc_from_encoding_index(idx); } /* |