From 3889ce2d156bef45c1f05463fc2cd54a309a1e7e Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 5 Feb 2014 04:31:18 +0000 Subject: [PATCH] * string.c (rb_str_free): use FL_TEST(str, STR_SHARED) directly because str is not embed. * string.c (str_replace): remove `FL_SET(str, STR_SHARED)' line because STR_SET_SHARED() set STR_SHARED. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ string.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f9d1e8ac5b..773d07e38c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Feb 5 13:29:01 2014 Koichi Sasada + + * string.c (rb_str_free): use FL_TEST(str, STR_SHARED) directly + because str is not embed. + + * string.c (str_replace): remove `FL_SET(str, STR_SHARED)' line + because STR_SET_SHARED() set STR_SHARED. + Wed Feb 5 13:18:08 2014 Koichi Sasada * internal.h: remove macros STR_NOCAPA and STR_NOCAPA_P(). diff --git a/string.c b/string.c index 929ba516ff..0110c0a3a0 100644 --- a/string.c +++ b/string.c @@ -915,7 +915,8 @@ rb_str_free(VALUE str) st_data_t fstr = (st_data_t)str; st_delete(frozen_strings, &fstr, NULL); } - if (!STR_EMBED_P(str) && !STR_SHARED_P(str)) { + + if (!STR_EMBED_P(str) && !FL_TEST(str, STR_SHARED)) { ruby_sized_xfree(STR_HEAP_PTR(str), STR_HEAP_SIZE(str)); } } @@ -1009,7 +1010,6 @@ str_replace(VALUE str, VALUE str2) STR_SET_NOEMBED(str); RSTRING(str)->as.heap.len = len; RSTRING(str)->as.heap.ptr = RSTRING_PTR(str2); - FL_SET(str, STR_SHARED); STR_SET_SHARED(str, shared); } else {