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"⟩ # ⥊