From f83781c8c109b7f0b8cd6604d8fed6b8c13b8fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Mon, 10 Feb 2020 12:10:51 +0900 Subject: rb_enc_str_asciionly_p expects T_STRING This `str2` variable can be non-string (regexp etc.) but the previous code passed it directly to rb_enc_str_asciionly_p(), which expects its argument be a string. Let's enforce that constraint. --- encoding.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'encoding.c') diff --git a/encoding.c b/encoding.c index ca98b8edb0..f2e67ff508 100644 --- a/encoding.c +++ b/encoding.c @@ -919,7 +919,7 @@ enc_compatible_latter(VALUE str1, VALUE str2, int idx1, int idx2) if (isstr2 && RSTRING_LEN(str2) == 0) return enc1; isstr1 = RB_TYPE_P(str1, T_STRING); - if (isstr1 && RSTRING_LEN(str1) == 0) + if (isstr1 && isstr2 && RSTRING_LEN(str1) == 0) return (rb_enc_asciicompat(enc1) && rb_enc_str_asciionly_p(str2)) ? enc1 : enc2; if (!rb_enc_asciicompat(enc1) || !rb_enc_asciicompat(enc2)) { return 0; -- cgit v1.2.3