mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
## Summary - Fixed napi_strict_equals to use JavaScript === operator semantics instead of Object.is() - Added missing recv parameter validation in napi_call_function - Fixed napi_create_array_with_length boundary handling to match Node.js behavior ## Changes ### napi_strict_equals - Changed from isSameValue (Object.is semantics) to isStrictEqual (=== semantics) - Now correctly implements JavaScript strict equality: NaN !== NaN and -0 === 0 - Added new JSC binding JSC__JSValue__isStrictEqual to support this ### napi_call_function - Added NAPI_CHECK_ARG(env, recv) validation to match Node.js behavior - Prevents crashes when recv parameter is null/undefined ### napi_create_array_with_length - Fixed boundary value handling for negative and oversized lengths - Now correctly clamps negative signed values to 0 (e.g., when size_t 0x80000000 becomes negative in i32) - Matches Node.js V8 implementation which casts size_t to int then clamps to min 0 ## Test plan - [x] Added comprehensive C++ tests in test/napi/napi-app/standalone_tests.cpp - [x] Added corresponding JavaScript tests in test/napi/napi.test.ts - [x] Tests verify: - Strict equality semantics (NaN, -0/0, normal values) - Null recv parameter handling - Array creation with boundary values (negative, oversized, edge cases) 🤖 Generated with [Claude Code](https://claude.ai/code)