diff --git a/src/bun.js/api/TOMLObject.zig b/src/bun.js/api/TOMLObject.zig index 03d80e1df7..f264462a02 100644 --- a/src/bun.js/api/TOMLObject.zig +++ b/src/bun.js/api/TOMLObject.zig @@ -70,9 +70,22 @@ pub fn stringify( globalThis: *jsc.JSGlobalObject, callframe: *jsc.CallFrame, ) bun.JSError!jsc.JSValue { - const value = callframe.argumentsAsArray(1)[0]; + const arguments = callframe.arguments(); + if (arguments.len == 0) { + return globalThis.throwInvalidArguments("Expected a value to stringify", .{}); + } - if (value.isUndefined() or value.isSymbol() or value.isFunction()) { + const value = arguments.ptr[0]; + + if (value.isUndefined()) { + return globalThis.throwInvalidArguments("Cannot stringify undefined value to TOML", .{}); + } + + if (value.isNull()) { + return globalThis.throwInvalidArguments("Cannot stringify null value to TOML", .{}); + } + + if (value.isSymbol() or value.isFunction()) { return .js_undefined; } diff --git a/test/js/bun/toml/toml-stringify.test.ts b/test/js/bun/toml/toml-stringify.test.ts index 135ccc1724..d204dd68dc 100644 --- a/test/js/bun/toml/toml-stringify.test.ts +++ b/test/js/bun/toml/toml-stringify.test.ts @@ -232,8 +232,7 @@ number = 42 const result = Bun.TOML.stringify(obj); expect(result).toMatchInlineSnapshot(` -" -[metadata] +"[metadata] version = "1.0" tags = ["production", "web"] numbers = [