String#replace should update s->flags for MRB_STR_NO_UTF.

Otherwise String#size may return wrong length; fix #3448
This commit is contained in:
Yukihiro "Matz" Matsumoto
2017-02-11 16:27:07 +09:00
parent 6cb7aef563
commit 8f4a929e1a
+2
View File
@@ -519,6 +519,8 @@ str_replace(mrb_state *mrb, struct RString *s1, struct RString *s2)
long len;
check_frozen(mrb, s1);
s1->flags &= ~MRB_STR_NO_UTF;
s1->flags |= s2->flags&MRB_STR_NO_UTF;
if (s1 == s2) return mrb_obj_value(s1);
len = RSTR_LEN(s2);
if (RSTR_SHARED_P(s1)) {