fix unshare on heap-allocated atoms
This commit is contained in:
parent
b2259d77c1
commit
41c9a51ff3
@ -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)));
|
||||||
|
|||||||
@ -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⟩ %% 1‿1‿1‿1
|
•internal.Refc∘•internal.Unshare¨ ⟨↕0, "", ⟨⟩, ↕10⟩ %% 1‿1‿1‿1
|
||||||
|
⟨a⟩‿b‿c ← •internal.Unshare ⟨{a⇐↕2},"hi",3⟩ ⋄ a‿b‿c %% ⟨0‿1, "hi", 3⟩
|
||||||
# •internal.EEqual
|
# •internal.EEqual
|
||||||
%USE nan ⋄ a←1⌽nans∾•ParseFloat¨"0"‿"1.2"‿"-0" ⋄ a •internal.EEqual ⌽a %% 1
|
%USE nan ⋄ a←1⌽nans∾•ParseFloat¨"0"‿"1.2"‿"-0" ⋄ a •internal.EEqual ⌽a %% 1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user