diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index 0a8109a6..1079734e 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -429,6 +429,7 @@ B slash_c1(B t, B x) { if (RARE(isAtm(x)) || RARE(RNK(x)!=1)) thrF("/: Argument must have rank 1 (%H ≡ ≢𝕩)", x); u64 s = usum(x); if (s>=USZ_MAX) thrOOM(); + if (s==0) { decG(x); return emptyIVec(); } usz xia = IA(x); if (RARE(xia>=I32_MAX)) { usz xia = IA(x); @@ -471,9 +472,11 @@ B slash_c1(B t, B x) { if (xe==el_bit) { u64* xp = bitarr_ptr(x); while (xia>0 && !bitp_get(xp,xia-1)) xia--; - for (u64 i = 0; i < xia; i++) { - *rp = i; - rp+= bitp_get(xp, i); + u8* x8 = (u8*)xp; + u8 q=xia%8; if (q) x8[xia/8] &= (1<>=1; } } } else if (xe==el_i8) { i8* xp = i8any_ptr(x);