diff --git a/src/bun.js/node/path.zig b/src/bun.js/node/path.zig index c3767f3c23..9987cbf379 100644 --- a/src/bun.js/node/path.zig +++ b/src/bun.js/node/path.zig @@ -453,7 +453,7 @@ pub inline fn basenameJS_T(comptime T: type, globalObject: *JSC.JSGlobalObject, } pub fn basename(globalObject: *JSC.JSGlobalObject, isWindows: bool, args_ptr: [*]JSC.JSValue, args_len: u16) callconv(JSC.conv) JSC.JSValue { - const suffix_ptr: ?JSC.JSValue = if (args_len > 1) args_ptr[1] else null; + const suffix_ptr: ?JSC.JSValue = if (args_len > 1 and args_ptr[1] != .undefined) args_ptr[1] else null; if (suffix_ptr) |_suffix_ptr| { // Supress exeption in zig. It does globalThis.vm().throwError() in JS land. diff --git a/test/js/node/path/basename.test.js b/test/js/node/path/basename.test.js index 7d53a9909c..c94cd91132 100644 --- a/test/js/node/path/basename.test.js +++ b/test/js/node/path/basename.test.js @@ -45,6 +45,7 @@ describe("path.dirname", () => { assert.strictEqual(path.win32.basename("basename.ext\\"), "basename.ext"); assert.strictEqual(path.win32.basename("basename.ext\\\\"), "basename.ext"); assert.strictEqual(path.win32.basename("foo"), "foo"); + assert.strictEqual(path.win32.basename("foo", undefined), "foo"); assert.strictEqual(path.win32.basename("aaa\\bbb", "\\bbb"), "bbb"); assert.strictEqual(path.win32.basename("aaa\\bbb", "a\\bbb"), "bbb"); assert.strictEqual(path.win32.basename("aaa\\bbb", "bbb"), "bbb"); @@ -72,6 +73,7 @@ describe("path.dirname", () => { assert.strictEqual(path.posix.basename("basename.ext\\"), "basename.ext\\"); assert.strictEqual(path.posix.basename("basename.ext\\\\"), "basename.ext\\\\"); assert.strictEqual(path.posix.basename("foo"), "foo"); + assert.strictEqual(path.posix.basename("foo", undefined), "foo"); }); test("posix with control characters", () => {