From 68214dda5349390e0c40dcdb7633519ab7cae06b Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 22 Aug 2021 23:41:37 +0300 Subject: [PATCH] =?UTF-8?q?fix=20=E2=86=91=E2=80=BF3=E2=A5=8A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/sfns.c | 8 ++++++++ src/h.h | 2 +- src/utils/mut.h | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index fad482b5..fa69a445 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -158,6 +158,14 @@ B shape_c2(B t, B w, B x) { } unit: + if (fill && nia>1) { + MAKE_MUT(m, nia); mut_init(m, selfElType(x)); + mut_setG(m, 0, x); + mut_fillG(m, 1, xf, nia-1); + Arr* ra = mut_fp(m); + arr_shSetU(ra, nr, sh); + return withFill(taga(ra), xf); + } if (isF64(x)) { decA(xf); i32 n = (i32)x.f; if (n == x.f) { diff --git a/src/h.h b/src/h.h index 6ea83163..af70e3aa 100644 --- a/src/h.h +++ b/src/h.h @@ -532,7 +532,7 @@ static u8 fillElType(B x) { if (isC32(x)) return el_c32; return el_B; } -static u8 selfElType(B x) { +static u8 selfElType(B x) { // guaranteed to fit fill if (isF64(x)) return q_i32(x)? el_i32 : el_f64; if (isC32(x)) return el_c32; return el_B; diff --git a/src/utils/mut.h b/src/utils/mut.h index 5ec76f8c..f5caf99c 100644 --- a/src/utils/mut.h +++ b/src/utils/mut.h @@ -192,7 +192,7 @@ static void mut_fill(Mut* m, usz ms, B x, usz l) { mut_to(m, nty); goto again; } -static void mut_fillG(Mut* m, usz ms, B x, usz l) { +static void mut_fillG(Mut* m, usz ms, B x, usz l) { // doesn't consume x switch(m->type) { default: UD; case el_i32: { assert(q_i32(x));