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