From 0e306ca1493ae5e167a6cf840a0a8d8c6072fa09 Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 7 Sep 2022 20:17:54 +0300 Subject: [PATCH] use WRAP instead of manual index management --- src/builtins/select.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/builtins/select.c b/src/builtins/select.c index 62a3f962..91ec4f1a 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -172,10 +172,8 @@ B select_c2(B t, B w, B x) { for (usz i = 0; i < wia; i++) { B cw = GetU(w, i); if (!isNum(cw)) { mut_pfree(r, i*csz); goto base; } - i64 c = o2i64(cw); - if (c<0) c+= cam; - if ((usz)c >= cam) { mut_pfree(r, i*csz); thrF("โŠ: Indexing out-of-bounds (%RโˆŠ๐•จ, %sโ‰กโ‰ ๐•ฉ)", cw, cam); } - mut_copyG(r, i*csz, x, csz*(usz)c, csz); + usz c = WRAP(o2i64(cw), cam, { mut_pfree(r, i*csz); thrF("โŠ: Indexing out-of-bounds (%RโˆŠ๐•จ, %sโ‰กโ‰ ๐•ฉ)", cw, cam); }); + mut_copyG(r, i*csz, x, csz*c, csz); } Arr* ra = mut_fp(r); usz* rsh = arr_shAlloc(ra, rr);