Assume that shared array is not embedded

An array cannot be shared and embedded at the same time, so we can assume
that a shared array is not embedded.
This commit is contained in:
Peter Zhu 2024-08-21 11:53:19 -04:00
parent 87fa75c5db
commit 2459e79b80
Notes: git 2024-08-27 13:58:57 +00:00

View File

@ -4657,12 +4657,10 @@ rb_ary_clear(VALUE ary)
{
rb_ary_modify_check(ary);
if (ARY_SHARED_P(ary)) {
if (!ARY_EMBED_P(ary)) {
rb_ary_unshare(ary);
FL_SET_EMBED(ary);
ARY_SET_EMBED_LEN(ary, 0);
}
}
else {
ARY_SET_LEN(ary, 0);
if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
@ -6235,7 +6233,7 @@ rb_ary_uniq_bang(VALUE ary)
}
rb_ary_modify_check(ary);
ARY_SET_LEN(ary, 0);
if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
if (ARY_SHARED_P(ary)) {
rb_ary_unshare(ary);
FL_SET_EMBED(ary);
}