better fix for in-place 𝔽¨𝕩 on fillslice 𝕩
This commit is contained in:
parent
927814d182
commit
b4a207a924
@ -77,7 +77,15 @@ B eachm_fn(B fo, B x, BB2B f) {
|
|||||||
case t_fillslice: {
|
case t_fillslice: {
|
||||||
FillSlice* s = c(FillSlice,x);
|
FillSlice* s = c(FillSlice,x);
|
||||||
Arr* p = s->p;
|
Arr* p = s->p;
|
||||||
if (p->refc==1 && (p->type==t_fillarr || p->type==t_harr) && ((FillArr*)p)->a == s->a && ptr_eqShape(p, a(x))) {
|
if (p->refc==1 && (p->type==t_fillarr || p->type==t_harr) && ((FillArr*)p)->a == s->a && PIA(p)==ia) {
|
||||||
|
ur sr = PRNK(s);
|
||||||
|
if (sr<=1) {
|
||||||
|
arr_shErase(p, sr);
|
||||||
|
} else {
|
||||||
|
usz* ssh = PSH(s);
|
||||||
|
if (ssh != PSH(p)) arr_shReplace(p, sr, ptr_inc(shObjS(ssh)));
|
||||||
|
}
|
||||||
|
|
||||||
x = taga(ptr_inc(p));
|
x = taga(ptr_inc(p));
|
||||||
value_free((Value*)s);
|
value_free((Value*)s);
|
||||||
goto re_reuse;
|
goto re_reuse;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user