From 680d0f8601c72c3997694f6164633d0356b62ff8 Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 5 Mar 2023 15:20:12 +0200 Subject: [PATCH] use mut_copy for building fold_rows result --- src/builtins/fold.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/builtins/fold.c b/src/builtins/fold.c index 72b43b1e..2af1b820 100644 --- a/src/builtins/fold.c +++ b/src/builtins/fold.c @@ -14,6 +14,7 @@ #include "../core.h" #include "../builtins.h" #include "../utils/calls.h" +#include "../utils/mut.h" #if SINGELI_X86_64 #define SINGELI_FILE fold @@ -337,7 +338,7 @@ B fold_rows(Md1D* fd, B x) { usz *sh = SH(x); usz n = sh[0]; usz m = sh[1]; usz b = (block + m - 1) / m; // Normal block length usz b_max = b + b/4; // Last block max length - B r = bi_N; + MAKE_MUT(r, n); BSS2A slice = TI(x,slice); for (usz i=0, im=0; i b_max) { incG(x); l = b; } @@ -347,9 +348,10 @@ B fold_rows(Md1D* fd, B x) { ssh[0] = l; ssh[1] = m; B sr = insert_c1(fd, C1(transp, taga(sl))); - r = q_N(r) ? sr : C2(join, r, sr); + mut_copy(r, i, sr, 0, l); + decG(sr); i += l; im += sia; } - return r; + return mut_fv(r); } }