From 6f99342c92055f8a891d889fb99ab7f131962977 Mon Sep 17 00:00:00 2001 From: naruse Date: Thu, 28 Feb 2008 11:58:11 +0000 Subject: * encoding.c (enc_find): check type of argument and convert to String if it is StringValue. [ruby-cvs:22866] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ bootstraptest/test_knownbug.rb | 4 ---- encoding.c | 2 +- test/ruby/test_m17n.rb | 7 +++++++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index db067ac061..6788ce3f26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Feb 28 19:45:52 2008 NARUSE, Yui + + * encoding.c (enc_find): check type of argument and convert to String + if it is StringValue. [ruby-cvs:22866] + Thu Feb 28 18:07:52 2008 Tanaka Akira * lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): setup encoding diff --git a/bootstraptest/test_knownbug.rb b/bootstraptest/test_knownbug.rb index 094c27037f..c438231f2c 100644 --- a/bootstraptest/test_knownbug.rb +++ b/bootstraptest/test_knownbug.rb @@ -57,7 +57,3 @@ assert_normal_exit %q{ assert_normal_exit %q{ "".center(1, "\x80".force_encoding("utf-8")) }, '[ruby-dev:33807]' - -assert_normal_exit %q{ - Encoding.find(nil) -} diff --git a/encoding.c b/encoding.c index 19343ea7c9..6cf32a81df 100644 --- a/encoding.c +++ b/encoding.c @@ -902,7 +902,7 @@ enc_find(VALUE klass, VALUE enc) { int idx; - if (SYMBOL_P(enc)) enc = rb_id2str(SYM2ID(enc)); + StringValue(enc); if (!rb_enc_asciicompat(rb_enc_get(enc))) { rb_raise(rb_eArgError, "invalid name encoding (non ASCII)"); } diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index 21189e323f..069554a127 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -1113,6 +1113,13 @@ class TestM17N < Test::Unit::TestCase assert_equal(Encoding::US_ASCII, {1=>nil,"foo"=>""}.to_s.encoding) end + def test_encoding_find + assert_raise(TypeError) {Encoding.find(nil)} + assert_raise(TypeError) {Encoding.find(0)} + assert_raise(TypeError) {Encoding.find([])} + assert_raise(TypeError) {Encoding.find({})} + end + def test_encoding_to_s assert_equal(Encoding::US_ASCII, Encoding::US_ASCII.to_s.encoding) assert_equal(Encoding::US_ASCII, Encoding::US_ASCII.inspect.encoding) -- cgit v1.2.3