diff --git a/encoding.c b/encoding.c index 0f3f7f2c53..bc3d2f78f2 100644 --- a/encoding.c +++ b/encoding.c @@ -1072,12 +1072,9 @@ rb_enc_get(VALUE obj) return rb_enc_from_index(rb_enc_get_index(obj)); } -static rb_encoding* enc_compatible_str(VALUE str1, VALUE str2); - -rb_encoding* -rb_enc_check_str(VALUE str1, VALUE str2) +static rb_encoding* +rb_encoding_check(rb_encoding* enc, VALUE str1, VALUE str2) { - rb_encoding *enc = enc_compatible_str(MUST_STRING(str1), MUST_STRING(str2)); if (!enc) rb_raise(rb_eEncCompatError, "incompatible character encodings: %s and %s", rb_enc_name(rb_enc_get(str1)), @@ -1085,15 +1082,20 @@ rb_enc_check_str(VALUE str1, VALUE str2) return enc; } +static rb_encoding* enc_compatible_str(VALUE str1, VALUE str2); + +rb_encoding* +rb_enc_check_str(VALUE str1, VALUE str2) +{ + rb_encoding *enc = enc_compatible_str(MUST_STRING(str1), MUST_STRING(str2)); + return rb_encoding_check(enc, str1, str2); +} + rb_encoding* rb_enc_check(VALUE str1, VALUE str2) { rb_encoding *enc = rb_enc_compatible(str1, str2); - if (!enc) - rb_raise(rb_eEncCompatError, "incompatible character encodings: %s and %s", - rb_enc_name(rb_enc_get(str1)), - rb_enc_name(rb_enc_get(str2))); - return enc; + return rb_encoding_check(enc, str1, str2); } static rb_encoding*