fix unshare on heap-allocated atoms

This commit is contained in:
dzaima 2025-05-11 20:28:23 +03:00
parent b2259d77c1
commit 41c9a51ff3
2 changed files with 3 additions and 2 deletions

View File

@ -231,8 +231,8 @@ static NOINLINE B unshareShape(Arr* x) {
arr_shReplace(x, xr, sh);
return taga(x);
}
static B unshare(B x) {
if (!isArr(x)) return x;
static B unshare(B x) { // doesn't consume
if (!isArr(x)) return inc(x);
usz xia = IA(x);
switch (TY(x)) {
case t_bitarr: return unshareShape((Arr*)cpyBitArr(incG(x)));

View File

@ -413,5 +413,6 @@ a←⋈"Ai32"•internal.Variation ↕10 ⋄ •internal.Type ⊑•internal.Dee
•internal.ClearRefs@ •internal.Variation(10)¨ 10<"Ai32Inc" •internal.ClearRefs "foo" %% 10
# •internal.Unshare
•internal.Refc•internal.Unshare¨ 0, "", , 10 %% 1111
abc •internal.Unshare {a2},"hi",3 abc %% 01, "hi", 3
# •internal.EEqual
%USE nan a1nans•ParseFloat¨"0""1.2""-0" a •internal.EEqual a %% 1