From 6942b2d04cda87625dbe724902fb62c1f01d61ac Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 4 Jul 2021 05:05:13 +0300 Subject: [PATCH] =?UTF-8?q?add=20checks=20for=20=F0=9D=95=A8<=C2=AF1=20in?= =?UTF-8?q?=20=E2=8A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/sfns.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index 16ca2345..0afe7abe 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -609,7 +609,11 @@ B group_c2(B t, B w, B x) { TALLOC(i32, len, ria); TALLOC(i32, pos, ria); for (usz i = 0; i < ria; i++) len[i] = pos[i] = 0; - for (usz i = 0; i < xia; i++) { i32 n = wp[i]; if (n>=0) len[n]++; } + for (usz i = 0; i < xia; i++) { + i32 n = wp[i]; + if (n>=0) len[n]++; + if (n<-1) thrM("⊔: 𝕨 can't contain elements less than ¯1"); + } Arr* r = m_fillarrp(ria); fillarr_setFill(r, m_f64(0)); arr_shVec(r, ria); @@ -655,8 +659,9 @@ B group_c2(B t, B w, B x) { BS2B wgetU = TI(w).getU; i64 ria = wia==xia? -1 : o2i64(wgetU(w, xia))-1; for (usz i = 0; i < xia; i++) { - if (!isNum(w)) goto base; - i64 c = o2i64(wgetU(w, i)); + B cw = wgetU(w, i); + if (!q_i64(cw)) goto base; + i64 c = o2i64u(cw); if (c>ria) ria = c; } if (ria>USZ_MAX-1) thrOOM(); @@ -667,6 +672,7 @@ B group_c2(B t, B w, B x) { for (usz i = 0; i < xia; i++) { i64 n = o2i64u(wgetU(w, i)); if (n>=0) len[n]++; + if (n<-1) thrM("⊔: 𝕨 can't contain elements less than ¯1"); } Arr* r = m_fillarrp(ria); fillarr_setFill(r, m_f64(0));