summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-06 08:25:25 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-06 08:25:25 +0900
commit5e79bc9377f9be27b04c07a533525ad75086a5af (patch)
treeb45eb1048a78afbc4386fd8b4b16e1246254248f /src
parenta7b0ab3769d9f7f13d47c2c6f23298c87b88eee8 (diff)
downloadmruby-5e79bc9377f9be27b04c07a533525ad75086a5af.tar.gz
mruby-5e79bc9377f9be27b04c07a533525ad75086a5af.zip
Make String#replace to check equality before modifying flags.
ref #3588
Diffstat (limited to 'src')
-rw-r--r--src/string.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/string.c b/src/string.c
index 742046361..f24ed3900 100644
--- a/src/string.c
+++ b/src/string.c
@@ -520,9 +520,9 @@ str_replace(mrb_state *mrb, struct RString *s1, struct RString *s2)
long len;
check_frozen(mrb, s1);
+ if (s1 == s2) return mrb_obj_value(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)) {
str_decref(mrb, s1->as.heap.aux.shared);