diff --git a/src/jsc/bindings/wtf-bindings.cpp b/src/jsc/bindings/wtf-bindings.cpp index 0d4968f805fc..8b09b5a8665f 100644 --- a/src/jsc/bindings/wtf-bindings.cpp +++ b/src/jsc/bindings/wtf-bindings.cpp @@ -61,7 +61,7 @@ extern "C" int uv_tty_reset_mode(void) static void uv__tty_make_raw(struct termios* tio) { - assert(tio != NULL); + ASSERT(tio != NULL); #if defined __sun || defined __MVS__ /* diff --git a/src/semver/SemverQuery.rs b/src/semver/SemverQuery.rs index 543faf66e782..13992719057e 100644 --- a/src/semver/SemverQuery.rs +++ b/src/semver/SemverQuery.rs @@ -722,7 +722,7 @@ pub fn parse(input: &[u8], sliced: SlicedString) -> Result { let mut token = Token::default(); let mut prev_token = Token::default(); - let mut count: u8 = 0; + let mut count: u32 = 0; let mut skip_round; let mut is_or = false; diff --git a/test/cli/install/semver.test.ts b/test/cli/install/semver.test.ts index 80d3ae62c262..58aaadf6db2a 100644 --- a/test/cli/install/semver.test.ts +++ b/test/cli/install/semver.test.ts @@ -14,6 +14,7 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR // IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +import { bunEnv, bunExe } from "harness"; import { unsortedPrereleases } from "./semver-fixture.js"; const { satisfies, order } = Bun.semver; @@ -226,7 +227,7 @@ describe("Bun.semver.satisfies()", () => { } } Bun.gc(true); - }); + }, 30_000); test("exact versions", () => { testSatisfiesExact("1.2.3", "1.2.3", true); @@ -738,3 +739,17 @@ describe("Bun.semver.satisfies()", () => { expect(unsortedPrereleases.sort(Bun.semver.order)).toMatchSnapshot(); }); }); + +test("a version range with >=256 || comparators does not abort", async () => { + const range = Array(300).fill("1.0.0").join(" || "); + await using proc = Bun.spawn({ + cmd: [bunExe(), "-e", `process.stdout.write(String(Bun.semver.satisfies("1.0.0", ${JSON.stringify(range)})))`], + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + if (exitCode !== 0) expect(stderr).toBe(""); + expect(stdout).toBe("true"); + expect(exitCode).toBe(0); +}, 30_000);