diff --git a/src/builtins/select.c b/src/builtins/select.c index cb7c4858..8ee1ed23 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -509,7 +509,8 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu case el_c16: rep = toC16Any(rep); ra = reuse? a(REUSE(x)) : cpyC16Arr(x); goto do_u16; case el_i32: rep = toI32Any(rep); ra = reuse? a(REUSE(x)) : cpyI32Arr(x); goto do_u32; case el_c32: rep = toC32Any(rep); ra = reuse? a(REUSE(x)) : cpyC32Arr(x); goto do_u32; - case el_f64: rep = toF64Any(rep); ra = reuse? a(REUSE(x)) : cpyF64Arr(x); goto do_f64; + case el_f64: if (csz!=1) { reuse = false; goto generic; } + rep = toF64Any(rep); ra = reuse? a(REUSE(x)) : cpyF64Arr(x); goto do_f64; case el_bit: { ra = reuse? a(REUSE(x)) : cpyBitArr(x); TyArr* na = toBitArr(rep); rep = taga(na); u64* np = bitarrv_ptr(na); @@ -531,6 +532,7 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu goto dec_ret_ra; } case el_B: { + generic:; ra = reuse? a(REUSE(x)) : cpyHArr(x); B* rp = harrv_ptr(ra); SGet(rep) diff --git a/test/cases/under.bqn b/test/cases/under.bqn index fe58e64b..264159f7 100644 --- a/test/cases/under.bqn +++ b/test/cases/under.bqn @@ -227,10 +227,12 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡ @𝕊·: @; 𝕨𝕊0: (1‿0‿1‿1∾6⥊0) {Repl⌾(𝕨⊸/) 𝕩}_res _eqvar 10⥊0‿1 - "𝔽⌾(a⊸/): Incompatible result elements" HasMsg (1‿0‿2∾7⥊0) {Repl⌾(𝕨⊸/) 𝕩}_res _mod _eqvar 10⥊0‿1 + "𝔽⌾(a⊸/): Incompatible result elements" HasMsg (1‿0‿2∾7⥊0) { Repl ⌾(𝕨⊸/) 𝕩}_res _mod _eqvar 10 ⥊0‿1 + "⌾: Incompatible result elements in structural Under" HasMsg (1‿0‿2∾7⥊0) {(3⥊˘Repl)⌾(𝕨⊸/) 𝕩}_res _mod _eqvar 10‿3⥊0‿1 1‿2‿5 {Repl⌾(𝕨⊸⊏) 𝕩}_res _eqvar 10⥊0‿1 - "𝔽⌾(a⊸⊏): Incompatible result elements" HasMsg 1‿4‿4 {Repl⌾(𝕨⊸⊏) 𝕩}_res _mod _eqvar 10⥊0‿1 + "𝔽⌾(a⊸⊏): Incompatible result elements" HasMsg 1‿4‿4 { Repl ⌾(𝕨⊸⊏) 𝕩}_res _mod _eqvar 10 ⥊0‿1 + "𝔽⌾(a⊸⊏): Incompatible result elements" HasMsg 1‿4‿4 {(3⥊˘Repl)⌾(𝕨⊸⊏) 𝕩}_res _mod _eqvar 10‿3⥊0‿1 ; 𝕨𝕊1: "⌾: Incompatible result elements in structural Under" HasMsg 1‿2‿2 {Repl⌾⊑⌾(𝕨⊸⊏¨) ⋈𝕩}_res _mod 0‿1‿0