LibJS: Return false for NaN numbers in Value::to_boolean()

This commit is contained in:
Jack Karamanian 2020-04-06 22:48:47 -05:00 committed by Andreas Kling
parent 4a9485f830
commit 57bd194e5a
Notes: sideshowbarker 2024-07-19 07:50:33 +09:00
2 changed files with 6 additions and 0 deletions

View file

@ -83,6 +83,9 @@ bool Value::to_boolean() const
case Type::Boolean:
return m_value.as_bool;
case Type::Number:
if (is_nan()) {
return false;
}
return !(m_value.as_double == 0 || m_value.as_double == -0);
case Type::Null:
case Type::Undefined:

View file

@ -10,6 +10,9 @@ try {
assert(isNaN(undefined) === true);
assert(isNaN(null) === false);
assert(isNaN(Infinity) === false);
assert(!!NaN === false);
assert(!!nan === false);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);