better fix for in-place 𝔽¨𝕩 on fillslice 𝕩

This commit is contained in:
dzaima 2023-04-23 22:49:12 +03:00
parent 927814d182
commit b4a207a924

View File

@ -77,7 +77,15 @@ B eachm_fn(B fo, B x, BB2B f) {
case t_fillslice: {
FillSlice* s = c(FillSlice,x);
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));
value_free((Value*)s);
goto re_reuse;