From d1d8e8be03a0ee15885050a967e6d1093314b623 Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 26 Jul 2024 23:24:42 +0300 Subject: [PATCH] =?UTF-8?q?fix=20assertion=20on=20F=E2=8C=BE(=E2=9F=A8?= =?UTF-8?q?=E2=9F=A9=E2=8A=B8=E2=8A=8F)=20x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/select.c | 4 ++-- test/cases/under.bqn | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/builtins/select.c b/src/builtins/select.c index 41daf25f..a753adc1 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -423,7 +423,7 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu #endif #define READ_W(N,I) i64 N = (i64)wp[I]; if (RARE(N<0)) N+= (i64)cam - u8 we = TI(w,elType); assert(elNum(we)); + u8 we = TI(w,elType); assert(elNum(we) || wia==0); u8 xe = TI(x,elType); u8 re = el_or(xe, TI(rep,elType)); Arr* ra; @@ -455,7 +455,7 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu ra = mut_fp(r); goto dec_ret_ra; } - assert(elInt(we)); + assert(elInt(we) || wia==0); w = toI32Any(w); i32* wp = i32any_ptr(w); diff --git a/test/cases/under.bqn b/test/cases/under.bqn index 45c8d4c9..c9736060 100644 --- a/test/cases/under.bqn +++ b/test/cases/under.bqn @@ -64,6 +64,7 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡ %USE eqvar ⋄ 1⊸+⌾((2/↕5)⊸⊏) _eqvar ↕10 %% <⟜5⊸+ ↕10 %USE eqvar ⋄ 1⊸+⌾((2/↕5)⊸⊏) _eqvar ≍˘ ↕10 %% ≍˘ <⟜5⊸+ ↕10 %USE eqvar ⋄ •internal.Keep⌾((2/↕5)⊸⊏) _eqvar 10‿0‿4⥊0 %% 10‿0‿4⥊0 +%USE eqvar ⋄ (<⟨⟩) {•internal.Keep⌾(𝕨⊸⊏) 𝕩}_eqvar¨ ⟨0‿1, "ab"‿"cd"⟩ %% ⟨0‿1, "ab"‿"cd"⟩ # ⥊