| diff --git a/mfbt/decimal/Decimal.cpp b/mfbt/decimal/Decimal.cpp |
| --- a/mfbt/decimal/Decimal.cpp |
| +++ b/mfbt/decimal/Decimal.cpp |
| @@ -505,21 +505,25 @@ Decimal Decimal::operator/(const Decimal |
| if (remainder > divisor / 2) |
| ++result; |
| |
| return Decimal(resultSign, resultExponent, result); |
| } |
| |
| bool Decimal::operator==(const Decimal& rhs) const |
| { |
| + if (isNaN() || rhs.isNaN()) |
| + return false; |
| return m_data == rhs.m_data || compareTo(rhs).isZero(); |
| } |
| |
| bool Decimal::operator!=(const Decimal& rhs) const |
| { |
| + if (isNaN() || rhs.isNaN()) |
| + return true; |
| if (m_data == rhs.m_data) |
| return false; |
| const Decimal result = compareTo(rhs); |
| if (result.isNaN()) |
| return false; |
| return !result.isZero(); |
| } |
| |
| @@ -528,16 +532,18 @@ bool Decimal::operator<(const Decimal& r |
| const Decimal result = compareTo(rhs); |
| if (result.isNaN()) |
| return false; |
| return !result.isZero() && result.isNegative(); |
| } |
| |
| bool Decimal::operator<=(const Decimal& rhs) const |
| { |
| + if (isNaN() || rhs.isNaN()) |
| + return false; |
| if (m_data == rhs.m_data) |
| return true; |
| const Decimal result = compareTo(rhs); |
| if (result.isNaN()) |
| return false; |
| return result.isZero() || result.isNegative(); |
| } |
| |
| @@ -546,16 +552,18 @@ bool Decimal::operator>(const Decimal& r |
| const Decimal result = compareTo(rhs); |
| if (result.isNaN()) |
| return false; |
| return !result.isZero() && result.isPositive(); |
| } |
| |
| bool Decimal::operator>=(const Decimal& rhs) const |
| { |
| + if (isNaN() || rhs.isNaN()) |
| + return false; |
| if (m_data == rhs.m_data) |
| return true; |
| const Decimal result = compareTo(rhs); |
| if (result.isNaN()) |
| return false; |
| return result.isZero() || !result.isNegative(); |
| } |
| |