From c4136d4a532eb59bb14a7873c46f61a72b022d33 Mon Sep 17 00:00:00 2001 From: dzaima Date: Tue, 11 Jan 2022 18:54:40 +0200 Subject: [PATCH] =?UTF-8?q?fix=20/=E2=81=BC=20with=2064-bit=20usz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/sfns.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index 53dc9d60..e81b27e5 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -729,9 +729,10 @@ B slash_im(B t, B x) { B* xp = arr_bptr(x); if (xp==NULL) { HArr* xa=cpyHArr(x); x=taga(xa); xp=xa->a; } usz i,j; B r; i64 max=-1; - for (i = 0; i < xia; i++) { usz c=o2s(xp[i]); if (c!=(usz)c) thrM("/⁼: Argument must consist of natural numbers"); if (c<=max) break; max=c; } - for (j = i; j < xia; j++) { usz c=o2s(xp[j]); if (c!=(usz)c) thrM("/⁼: Argument must consist of natural numbers"); max=c>max?c:max; if (c<0) thrM("/⁼: Argument cannot contain negative numbers"); } - usz ria = max+1; if (ria==0) thrOOM(); + for (i = 0; i < xia; i++) { i64 c=o2i64(xp[i]); if (c<=max) break; max=c; } + for (j = i; j < xia; j++) { i64 c=o2i64(xp[j]); max=c>max?c:max; if (c<0) thrM("/⁼: Argument cannot contain negative numbers"); } + if (max > USZ_MAX-1) thrOOM(); + usz ria = max+1; if (i==xia) { u64* rp; r = m_bitarrv(&rp, ria); for (usz i=0; i