diff options
author | dzaima <dzaimagit@gmail.com> | 2024-04-20 21:23:28 +0300 |
---|---|---|
committer | dzaima <dzaimagit@gmail.com> | 2024-04-20 21:24:51 +0300 |
commit | 5600bb189adbb704a4d36aea4a97ec6b118bb9cb (patch) | |
tree | b37767ff41902833816c60a3637ab79f89019798 | |
parent | de529e483bcdda2ad571f37070d4a88ed98e9144 (diff) |
fix ⟨1,2⋆62⟩/2⥊<⋈0
-rw-r--r-- | src/builtins/slash.c | 6 | ||||
-rw-r--r-- | test/cases/prims.bqn | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/builtins/slash.c b/src/builtins/slash.c index ddc6200a..ce4a7deb 100644 --- a/src/builtins/slash.c +++ b/src/builtins/slash.c @@ -673,8 +673,10 @@ B slash_c2(B t, B w, B x) { usz csz = arr_csz(x); MAKE_MUT_INIT(r0, s*csz, TI(x,elType)); MUTG_INIT(r0); SGetU(w) - if (csz!=1) { usz ri=0; for (ux i=0; i<wia; i++) { usz c=o2s(GetU(w, i)); for(ux j=0;j<c;j++) { mut_copyG(r0, ri, x, i*csz, csz); ri+= csz; } } } - else { SGetU(x) usz ri=0; for (ux i=0; i<wia; i++) { usz c=o2s(GetU(w, i)); if (c) { mut_fillG(r0, ri, GetU(x, i), c); ri+= c; } } } + B wc; usz ri=0; + if (csz!=1) { for (ux i=0; i<wia; i++) { if (!q_usz(wc=GetU(w,i))) goto pfree; usz c=o2sG(wc); for(ux j=0;j<c;j++) { mut_copyG(r0, ri, x, i*csz, csz); ri+= csz; } } } + else { SGetU(x) for (ux i=0; i<wia; i++) { if (!q_usz(wc=GetU(w,i))) goto pfree; usz c=o2sG(wc); if (c) { mut_fillG(r0, ri, GetU(x, i), c); ri+= c; } } } + if (0) { pfree: mut_pfree(r0, ri); expI_B(wc); } Arr* ra = mut_fp(r0); if (xr == 1) { arr_shVec(ra); diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index 0a6ae759..5d422dc1 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -84,6 +84,8 @@ !"𝕨/𝕩: Compound 𝕨 must have rank at most 1" % (1‿2⥊<↕4) / ↕4 !"𝕨/𝕩: 𝕨 must consist of natural numbers" % ⟨↕4, 1‿2‿3.5‿4⟩ / 4‿4⥊↕16 !"𝕨/𝕩: 𝕨 must consist of natural numbers" % ⟨↕4, 3.5⟩ / 4‿4⥊↕16 +!"Integer out of range: 4.611686018427388e18" % ⟨1,2⋆62⟩ / 2‿2⥊<⋈0 +!"Integer out of range: 4.611686018427388e18" % ⟨1,2⋆62⟩ / 2⥊<⋈0 ⟨↕4, 0, ↕5⟩ / 4‿4‿5⥊@ %% 6‿0‿10⥊@ ⟨↕4, 4⥊0, ↕5⟩ / 4‿4‿5⥊@ %% 6‿0‿10⥊@ 1‿0‿2 / ⋈¨ ["ab","cd","ef"] %% ⋈¨ ["ab","ef","ef"] |