From ac069134c3a5c009c8429d19ffb0a7598f535330 Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 25 Mar 2024 16:04:33 +0200 Subject: [PATCH] =?UTF-8?q?fix=20=E2=9F=A81.5=E2=9F=A9=20=E2=8A=8F=20"ab"?= =?UTF-8?q?=E2=80=BF"cd"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/select.c | 4 +++- test/cases/prims.bqn | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/builtins/select.c b/src/builtins/select.c index 233d9858..3665dbaa 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -338,7 +338,8 @@ B select_c2(B t, B w, B x) { MUTG_INIT(rm); for (; i < wia; i++) { B cw = GetU(w, i); // assumed number from previous squeeze - usz c = WRAP(o2i64(cw), xn, { badw=o2fG(cw); goto bad1; }); + if (!q_i64(cw)) { bad_cw: badw=o2fG(cw); goto bad1; } + usz c = WRAP(o2i64G(cw), xn, goto bad_cw; ); mut_copyG(rm, i*csz, x, csz*c, csz); } r = a(withFill(mut_fv(rm), xf)); @@ -347,6 +348,7 @@ B select_c2(B t, B w, B x) { bad1:; mut_pfree(rm, i*csz); + if (!q_fi64(badw)) expI_f64(badw); thrF("⊏: Indexing out-of-bounds (%f∊𝕨, %s≡≠𝕩)", badw, xn); } diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index c6514fe5..d4a802db 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -122,6 +122,8 @@ a←↕2 ⋄ ! "e" ≡ (↕10){b←a‿a‿a‿a‿a‿a‿a‿a‿a‿a ⋄ !"⊏: 𝕩 cannot be a unit" % ⟨⟩⊏<"a" !"⊏: 𝕩 cannot be a unit" % ⟨⟩⊏<5 !"⊏: 𝕩 cannot be an atom" % ⟨⟩⊏5 +!"Expected integer, got 1.5" % ⟨1.5⟩ ⊏ "ab"‿"cd" +!"⊏: Indexing out-of-bounds (10∊𝕨, 2≡≠𝕩)" % ⟨10⟩ ⊏ "ab"‿"cd" # 𝕨⊑𝕩 !"⊑: 𝕨 contained a non-integer" % ⟨0.1⟩⊑↕3