From b4a207a924b4378fa4d393560089af06fe28aa9b Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 23 Apr 2023 22:49:12 +0300 Subject: [PATCH] =?UTF-8?q?better=20fix=20for=20in-place=20=F0=9D=94=BD?= =?UTF-8?q?=C2=A8=F0=9D=95=A9=20on=20fillslice=20=F0=9D=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/each.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/utils/each.c b/src/utils/each.c index 778435ff..ecbe1883 100644 --- a/src/utils/each.c +++ b/src/utils/each.c @@ -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;