From 634cf82fbe4427f4aecf91cdb7ab9e399514e988 Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 11 Jun 2025 17:27:02 +0300 Subject: [PATCH] use reshape_one instead of manual mut_fill more --- src/builtins/cells.c | 4 +--- src/builtins/scan.c | 6 +++--- src/utils/each.c | 10 +++++++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/builtins/cells.c b/src/builtins/cells.c index 36bc5914..09963888 100644 --- a/src/builtins/cells.c +++ b/src/builtins/cells.c @@ -362,9 +362,7 @@ static NOINLINE B to_fill_cell(B x, ur k, u32 chr) { // consumes x usz* sh = SH(x)+k; usz csz = 1; for (usz i=0; i1) shcpy(csh, sh, cr); decG(x); diff --git a/src/builtins/scan.c b/src/builtins/scan.c index fe53db9c..57dde4b5 100644 --- a/src/builtins/scan.c +++ b/src/builtins/scan.c @@ -368,10 +368,10 @@ B scan_c2(Md1D* d, B w, B x) { B f = d->f; if (ia==0) { dec(w); return x; } if (RARE(!isFun(f))) { if (isMd(f)) thrM("Calling a modifier"); + Arr* ra = arr_shCopy(reshape_one(ia, inc(f)), x); B xf = getFillR(x); - MAKE_MUT(rm, ia); - mut_fill(rm, 0, f, ia); - return withFill(mut_fcd(rm, x), xf); + decG(x); + return withFill(taga(ra), xf); } u8 xe = TI(x,elType); if (RTID(f) != RTID_NONE) { diff --git a/src/utils/each.c b/src/utils/each.c index 56c89ee9..84ce25a7 100644 --- a/src/utils/each.c +++ b/src/utils/each.c @@ -40,9 +40,13 @@ B eachd_fn(B fo, B w, B x, FC2 f) { if (ria==0) { rb = rM==1? emptyHVec() : m_harrUc(bo).b; } else if (f == arr_c2) { - MAKE_MUT(rm, ria); - mut_fill(rm, 0, fo, ria); - rb = mut_fc(rm, bo); + if (EACH_FILLS) { + rb = taga(arr_shCopy(reshape_one(ria, inc(fo)), bo)); + } else { + MAKE_MUT(rm, ria); + mut_fill(rm, 0, fo, ria); + rb = mut_fc(rm, bo); + } } else { M_HARR(r, ria) if (wr==xr) { SGet(x) SGet(w) for(usz ri=0; ri