diff --git a/jerry-core/ecma/operations/ecma-conversion.c b/jerry-core/ecma/operations/ecma-conversion.c index c30b6add1..2b929dec1 100644 --- a/jerry-core/ecma/operations/ecma-conversion.c +++ b/jerry-core/ecma/operations/ecma-conversion.c @@ -98,9 +98,12 @@ ecma_op_same_value (ecma_value_t x, /**< ecma value */ ecma_number_t x_num = ecma_get_number_from_value (x); ecma_number_t y_num = ecma_get_number_from_value (y); - if (ecma_number_is_nan (x_num) == ecma_number_is_nan (y_num)) + bool is_x_nan = ecma_number_is_nan (x_num); + bool is_y_nan = ecma_number_is_nan (y_num); + + if (is_x_nan || is_y_nan) { - return true; + return is_x_nan && is_y_nan; } if (ecma_number_is_zero (x_num) diff --git a/tests/jerry/es2015/object-is.js b/tests/jerry/es2015/object-is.js index 0aad3a2d9..020175172 100644 --- a/tests/jerry/es2015/object-is.js +++ b/tests/jerry/es2015/object-is.js @@ -23,6 +23,9 @@ assert(Object.is(null, null) === true); assert(Object.is(2, 8) === false); assert(Object.is(8, 8) === true); +assert(Object.is(3.14, 6.28) === false); +assert(Object.is(3.14, 3.14) === true); + assert(Object.is('foo', 'foo') === true); assert(Object.is('foo', 'bar') === false); assert(Object.is(new String('foo'), 'foo') === false);