diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2020-02-10 12:10:51 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2020-02-10 12:19:30 +0900 |
commit | f83781c8c109b7f0b8cd6604d8fed6b8c13b8fd3 (patch) | |
tree | 17f97ef9ac4006db8e0e06f3cbed9c43088d108d /encoding.c | |
parent | a2845adb4958db33e3e190716c2a4a94365f94f2 (diff) |
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.
Diffstat (limited to 'encoding.c')
-rw-r--r-- | encoding.c | 2 |
1 files changed, 1 insertions, 1 deletions
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; |