diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | encoding.c | 10 |
2 files changed, 13 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Fri Aug 29 18:22:27 2008 NARUSE, Yui <naruse@ruby-lang.org> + + * encoding.c (enc_compatible_p): raise TypeError when argument is not + String nor Regexp. + Fri Aug 29 18:20:56 2008 NARUSE, Yui <naruse@ruby-lang.org> * string.c (rb_str_index_m): only regexp uses byte offset. diff --git a/encoding.c b/encoding.c index 291070dd19..21614245ae 100644 --- a/encoding.c +++ b/encoding.c @@ -880,8 +880,14 @@ enc_compatible_p(VALUE klass, VALUE str1, VALUE str2) { rb_encoding *enc; - if (enc_check_encoding(str1) > 0 || enc_check_encoding(str2) > 0) - rb_raise(rb_eTypeError, "wrong argument type Encoding (expected String)"); + 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 (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; enc = rb_enc_compatible(str1, str2); |