From 48bc63fa7aadb25f3c0fdaad9c116e9171a8cfad Mon Sep 17 00:00:00 2001 From: naruse Date: Tue, 2 Aug 2011 14:27:56 +0000 Subject: Fix r32811: add UNSPECIFIED_ENCODING case. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- encoding.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'encoding.c') 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); } /* -- cgit v1.2.3