diff --git a/src/builtins/md1.c b/src/builtins/md1.c index a3513062..f8b504c4 100644 --- a/src/builtins/md1.c +++ b/src/builtins/md1.c @@ -59,24 +59,24 @@ B tbl_c2(Md1D* d, B w, B x) { B f = d->f; B r; usz* rsh; + BBB2B fc2 = c2fn(f); if (!EACH_FILLS && isFun(f) && isPervasiveDy(f) && TI(w,arrD1)) { - BBB2B fc2 = c(Fun,f)->c2; if (TI(x,arrD1) && xia<80 && wia>130) { Arr* wd = arr_shVec(TI(w,slice)(incG(w), 0, wia)); r = fc2(f, slash_c2(f, m_i32(xia), taga(wd)), shape_c2(f, m_f64(ria), incG(x))); - } else { + } else if (xia>7) { SGet(w) M_HARR(r, wia) for (usz wi = 0; wi < wia; wi++) HARR_ADD(r, wi, fc2(f, Get(w,wi), incG(x))); r = bqn_merge(HARR_FV(r)); - } + } else goto generic; if (rnk(r)>1) { srnk(r, 0); // otherwise the following arr_shAlloc failing will result in r->sh dangling ptr_dec(shObj(r)); } rsh = arr_shAlloc(a(r), rr); } else { - BBB2B fc2 = c2fn(f); + generic:; SGetU(w) SGet(x) M_HARR(r, ria)