summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-28 11:58:11 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-28 11:58:11 +0000
commitea2a8c42ec22662868984d126f9634037a0e1648 (patch)
treecdf6dbf3e8f948340863e4d2c9e520e4233d1328
parenta822dd564c2103e062dddbc1135fb80eed26299c (diff)
downloadruby-ea2a8c42ec22662868984d126f9634037a0e1648.tar.gz
ruby-ea2a8c42ec22662868984d126f9634037a0e1648.tar.xz
ruby-ea2a8c42ec22662868984d126f9634037a0e1648.zip
* encoding.c (enc_find): check type of argument and convert to String
if it is StringValue. [ruby-cvs:22866] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--bootstraptest/test_knownbug.rb4
-rw-r--r--encoding.c2
-rw-r--r--test/ruby/test_m17n.rb7
4 files changed, 13 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index db067ac06..6788ce3f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Feb 28 19:45:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * 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 <akr@fsij.org>
* lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): setup encoding
diff --git a/bootstraptest/test_knownbug.rb b/bootstraptest/test_knownbug.rb
index 094c27037..c438231f2 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 19343ea7c..6cf32a81d 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 21189e323..069554a12 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)