aboutsummaryrefslogtreecommitdiffstats
path: root/encoding.c
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2020-02-10 12:10:51 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2020-02-10 12:19:30 +0900
commitf83781c8c109b7f0b8cd6604d8fed6b8c13b8fd3 (patch)
tree17f97ef9ac4006db8e0e06f3cbed9c43088d108d /encoding.c
parenta2845adb4958db33e3e190716c2a4a94365f94f2 (diff)
downloadruby-f83781c8c109b7f0b8cd6604d8fed6b8c13b8fd3.tar.gz
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.c2
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;