From 1ee875dcace287d0285575b9e8c5799a286cfb0f Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 27 Nov 2021 21:20:44 -0800 Subject: [PATCH] convertDoubleTo: invert the condition so we catch NaNs early This is floating point, so De Morgan doesn't always apply. Change-Id: I89446ea06b5742efb194fffd16bb9e36025cb387 Reviewed-by: Marc Mutz --- src/corelib/global/qnumeric_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/global/qnumeric_p.h b/src/corelib/global/qnumeric_p.h index bb3f1a976b2..4fa817077eb 100644 --- a/src/corelib/global/qnumeric_p.h +++ b/src/corelib/global/qnumeric_p.h @@ -198,7 +198,7 @@ static inline bool convertDoubleTo(double v, T *value, bool allow_precision_upgr // T has more bits than double's mantissa, so don't allow "upgrading" // to T (makes it look like the number had more precision than really // was transmitted) - if (!allow_precision_upgrade && (v > double(max_mantissa) || v < double(-max_mantissa - 1))) + if (!allow_precision_upgrade && !(v <= double(max_mantissa) && v >= double(-max_mantissa - 1))) return false; }