summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-10-12 23:35:43 +0900
committerGitHub <[email protected]>2019-10-12 23:35:43 +0900
commitd128e2d09eaed2f094dcc72f52d3b1c3378cff10 (patch)
treecc4139250236facac62adc250d2aed46f8e99abb
parent9f3b6ebbde0459ed9f18e0432d0a6f2db48dfb5c (diff)
parent7594983671da2871036af5e6437e106b159d04de (diff)
downloadmruby-d128e2d09eaed2f094dcc72f52d3b1c3378cff10.tar.gz
mruby-d128e2d09eaed2f094dcc72f52d3b1c3378cff10.zip
Merge pull request #4770 from shuujii/sHARED-string-is-not-required-when-sharing-POOL-string
SHARED string is not required when sharing POOL string
-rw-r--r--src/string.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/string.c b/src/string.c
index d1b177485..e4b63a36d 100644
--- a/src/string.c
+++ b/src/string.c
@@ -526,7 +526,7 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s)
size_t len = (size_t)orig->as.heap.len;
mrb_assert(!RSTR_EMBED_P(orig));
- if (RSTR_NOFREE_P(orig)) {
+ if (RSTR_NOFREE_P(orig) || RSTR_POOL_P(orig)) {
str_init_nofree(s, orig->as.heap.ptr, len);
}
else if (RSTR_SHARED_P(orig)) {
@@ -535,7 +535,7 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s)
else if (RSTR_FSHARED_P(orig)) {
str_init_fshared(orig, s, orig->as.heap.aux.fshared);
}
- else if (mrb_frozen_p(orig) && !RSTR_POOL_P(orig)) {
+ else if (mrb_frozen_p(orig)) {
str_init_fshared(orig, s, orig);
}
else {