fix fill of n↑fillarr

This commit is contained in:
dzaima 2021-10-20 18:29:28 +03:00
parent e38e4f89ae
commit f50b8ab503
2 changed files with 7 additions and 6 deletions

View File

@ -11,8 +11,9 @@ static Arr* take_impl(usz ria, B x) { // consumes x; returns v↑⥊𝕩 without
MAKE_MUT(r, ria); mut_init(r, TI(x,elType)); MAKE_MUT(r, ria); mut_init(r, TI(x,elType));
mut_copyG(r, 0, x, 0, xia); mut_copyG(r, 0, x, 0, xia);
mut_fill(r, xia, xf, ria-xia); mut_fill(r, xia, xf, ria-xia);
dec(x); dec(xf); dec(x);
return mut_fp(r); if (r->type!=el_B) { dec(xf); return mut_fp(r); }
return a(withFill(mut_fv(r), xf));
} else { } else {
return TI(x,slice)(x,0,ria); return TI(x,slice)(x,0,ria);
} }

View File

@ -57,10 +57,10 @@ static void mut_init(Mut* m, u8 n) {
void mut_to(Mut* m, u8 n); void mut_to(Mut* m, u8 n);
static B mut_fv(Mut* m) { assert(m->type!=el_MAX); static B mut_fv(Mut* m) { assert(m->type!=el_MAX);
m->val->sh = &m->val->ia; Arr* a = m->val;
B r = taga(m->val); a->sh = &a->ia;
srnk(r, 1); sprnk(a, 1);
return r; return taga(a);
} }
static B mut_fc(Mut* m, B x) { assert(m->type!=el_MAX); static B mut_fc(Mut* m, B x) { assert(m->type!=el_MAX);
Arr* a = m->val; Arr* a = m->val;