From 19c61e14c00837d01d36137a0afb7828a603c9d5 Mon Sep 17 00:00:00 2001 From: Roland Takacs <1487864+rtakacs@users.noreply.github.com> Date: Mon, 2 Mar 2020 15:57:11 +0100 Subject: [PATCH] Fix float point number comparsion (#3596) JerryScript-DCO-1.0-Signed-off-by: Roland Takacs rtakacs@inf.u-szeged.hu --- jerry-core/ecma/operations/ecma-conversion.c | 7 +++++-- tests/jerry/es2015/object-is.js | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) 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);