summaryrefslogtreecommitdiffstats
path: root/encoding.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-29 22:50:16 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-29 22:50:16 +0000
commitd0045cad37b394eedd169a153b8589482f4a889f (patch)
treec56877dfff392f93b069071dcb06421d79da0749 /encoding.c
parent8b9d53ed9d854fa8f97e0d5cc2242df1d72f3468 (diff)
downloadruby-d0045cad37b394eedd169a153b8589482f4a889f.tar.gz
ruby-d0045cad37b394eedd169a153b8589482f4a889f.tar.xz
ruby-d0045cad37b394eedd169a153b8589482f4a889f.zip
* encoding.c (enc_compatible_p): add SPECIAL_CONST_P check.
* test/ruby/test_m17n.rb (test_compatible): fix test. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/encoding.c b/encoding.c
index 21614245a..bb6f5b269 100644
--- a/encoding.c
+++ b/encoding.c
@@ -880,13 +880,15 @@ enc_compatible_p(VALUE klass, VALUE str1, VALUE str2)
{
rb_encoding *enc;
- if (BUILTIN_TYPE(str1) != T_STRING && BUILTIN_TYPE(str1) != T_REGEXP) {
- rb_raise(rb_eTypeError, "wrong argument type %s (expected String or Regexp)",
- rb_obj_classname(str1));
+ if (SPECIAL_CONST_P(str1) ||
+ BUILTIN_TYPE(str1) != T_STRING && BUILTIN_TYPE(str1) != T_REGEXP) {
+ rb_raise(rb_eTypeError, "wrong argument type %s (expected String or Regexp)",
+ rb_obj_classname(str1));
}
- if (BUILTIN_TYPE(str2) != T_STRING && BUILTIN_TYPE(str2) != T_REGEXP) {
- rb_raise(rb_eTypeError, "wrong argument type %s (expected String or Regexp)",
- rb_obj_classname(str2));
+ if (SPECIAL_CONST_P(str2) ||
+ BUILTIN_TYPE(str2) != T_STRING && BUILTIN_TYPE(str2) != T_REGEXP) {
+ rb_raise(rb_eTypeError, "wrong argument type %s (expected String or Regexp)",
+ rb_obj_classname(str2));
}
if (!enc_capable(str1)) return Qnil;
if (!enc_capable(str2)) return Qnil;