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); arr_shReplace(x, xr, sh);
return taga(x); return taga(x);
} }
static B unshare(B x) { static B unshare(B x) { // doesn't consume
if (!isArr(x)) return x; if (!isArr(x)) return inc(x);
usz xia = IA(x); usz xia = IA(x);
switch (TY(x)) { switch (TY(x)) {
case t_bitarr: return unshareShape((Arr*)cpyBitArr(incG(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.ClearRefs@ •internal.Variation(10)¨ 10<"Ai32Inc" •internal.ClearRefs "foo" %% 10
# •internal.Unshare # •internal.Unshare
•internal.Refc•internal.Unshare¨ 0, "", , 10 %% 1111 •internal.Refc•internal.Unshare¨ 0, "", , 10 %% 1111
abc •internal.Unshare {a2},"hi",3 abc %% 01, "hi", 3
# •internal.EEqual # •internal.EEqual
%USE nan a1nans•ParseFloat¨"0""1.2""-0" a •internal.EEqual a %% 1 %USE nan a1nans•ParseFloat¨"0""1.2""-0" a •internal.EEqual a %% 1