From 05f53dc70fa970d05771b2bda14547713582d7fd Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Thu, 10 Oct 2024 21:50:03 -0700 Subject: [PATCH] Fixes #14464 (#14473) --- src/bun.js/bindings/bindings.zig | 4 ++++ src/css/values/color_js.zig | 6 +++--- test/js/bun/css/color.test.ts | 10 ++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig index ed9adccbe2..0623c96d34 100644 --- a/src/bun.js/bindings/bindings.zig +++ b/src/bun.js/bindings/bindings.zig @@ -6510,6 +6510,10 @@ pub const CallFrame = opaque { pub inline fn slice(self: *const @This()) []const JSValue { return self.ptr[0..self.len]; } + + pub inline fn all(self: *const @This()) []const JSValue { + return self.ptr[0..]; + } }; } diff --git a/src/css/values/color_js.zig b/src/css/values/color_js.zig index 95d195a283..2ca8565133 100644 --- a/src/css/values/color_js.zig +++ b/src/css/values/color_js.zig @@ -146,9 +146,9 @@ pub const Ansi256 = struct { }; pub fn jsFunctionColor(globalThis: *JSC.JSGlobalObject, callFrame: *JSC.CallFrame) callconv(JSC.conv) JSC.JSValue { - const args = callFrame.arguments(2).slice(); - if (args.len < 1 or args[0].isUndefined()) { - globalThis.throwNotEnoughArguments("Bun.color", 2, args.len); + const args = callFrame.argumentsUndef(2).all(); + if (args[0].isUndefined()) { + globalThis.throwInvalidArgumentType("color", "input", "string, number, or object"); return JSC.JSValue.jsUndefined(); } diff --git a/test/js/bun/css/color.test.ts b/test/js/bun/css/color.test.ts index defbd795cc..1d0ec0f292 100644 --- a/test/js/bun/css/color.test.ts +++ b/test/js/bun/css/color.test.ts @@ -180,6 +180,7 @@ const bad = [ ]; test.each(bad)("color(%s, 'css') === null", input => { expect(color(input, "css")).toBeNull(); + expect(color(input)).toBeNull(); }); const weird = [ @@ -189,9 +190,18 @@ const weird = [ describe("weird", () => { test.each(weird)("color(%s, 'css') === %s", (input, expected) => { expect(color(input, "css")).toEqual(expected); + expect(color(input)).toEqual(expected); }); }); +test("0 args", () => { + expect(() => color()).toThrow( + expect.objectContaining({ + code: "ERR_INVALID_ARG_TYPE", + }), + ); +}); + test("fuzz ansi256", () => { withoutAggressiveGC(() => { for (let i = 0; i < 256; i++) {