diff --git a/encoding.c b/encoding.c index 222610b1d4..d4fe6ea124 100644 --- a/encoding.c +++ b/encoding.c @@ -1053,6 +1053,13 @@ rb_enc_check(VALUE str1, VALUE str2) static rb_encoding* enc_compatible_latter(VALUE str1, VALUE str2, int idx1, int idx2) { + if (idx1 < 0 || idx2 < 0) + return 0; + + if (idx1 == idx2) { + return rb_enc_from_index(idx1); + } + int isstr1, isstr2; rb_encoding *enc1 = rb_enc_from_index(idx1); rb_encoding *enc2 = rb_enc_from_index(idx2); @@ -1111,15 +1118,7 @@ enc_compatible_str(VALUE str1, VALUE str2) int idx1 = enc_get_index_str(str1); int idx2 = enc_get_index_str(str2); - if (idx1 < 0 || idx2 < 0) - return 0; - - if (idx1 == idx2) { - return rb_enc_from_index(idx1); - } - else { - return enc_compatible_latter(str1, str2, idx1, idx2); - } + return enc_compatible_latter(str1, str2, idx1, idx2); } rb_encoding* @@ -1128,13 +1127,6 @@ rb_enc_compatible(VALUE str1, VALUE str2) int idx1 = rb_enc_get_index(str1); int idx2 = rb_enc_get_index(str2); - if (idx1 < 0 || idx2 < 0) - return 0; - - if (idx1 == idx2) { - return rb_enc_from_index(idx1); - } - return enc_compatible_latter(str1, str2, idx1, idx2); }