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

10
array.c
View File

@ -4657,11 +4657,9 @@ 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);
}
rb_ary_unshare(ary);
FL_SET_EMBED(ary);
ARY_SET_EMBED_LEN(ary, 0);
}
else {
ARY_SET_LEN(ary, 0);
@ -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);
}