Use quiet NaNs instead of signaling ones
I see no good reason why the NaN returned when reading "nan" as a double should be a signaling one; a quiet one should be just fine. [ChangeLog][QtCore][QLocale] The NaN obtained when reading "nan" as a floating-point value is now quiet rather than signaling. [ChangeLog][QtCore][QTextStream] The NaN obtained when reading "nan" as a floating-point value is now quiet rather than signaling. Change-Id: Ife477a30bfb813c611b13a33c38ea82f9e8a93eb Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
effbf147a4
commit
978f579a8c
@ -2056,7 +2056,7 @@ bool QTextStreamPrivate::getReal(double *f)
|
||||
// nan/+inf/-inf, so here we also check for uppercase and mixed
|
||||
// case versions.
|
||||
if (!qstricmp(buf, "nan") || !qstricmp(buf, "+nan") || !qstricmp(buf, "-nan")) {
|
||||
*f = qSNaN();
|
||||
*f = qQNaN();
|
||||
return true;
|
||||
} else if (!qstricmp(buf, "+inf") || !qstricmp(buf, "inf")) {
|
||||
*f = qInf();
|
||||
|
@ -293,7 +293,7 @@ double qt_asciiToDouble(const char *num, int numLen, bool &ok, int &processed,
|
||||
// "-nan" or "+nan"
|
||||
if (qstrcmp(num, "nan") == 0) {
|
||||
processed = 3;
|
||||
return qt_snan();
|
||||
return qt_qnan();
|
||||
} else if ((num[0] == '-' || num[0] == '+') && qstrcmp(num + 1, "nan") == 0) {
|
||||
processed = 0;
|
||||
ok = false;
|
||||
@ -322,7 +322,7 @@ double qt_asciiToDouble(const char *num, int numLen, bool &ok, int &processed,
|
||||
conv_flags = double_conversion::StringToDoubleConverter::ALLOW_LEADING_SPACES
|
||||
| double_conversion::StringToDoubleConverter::ALLOW_TRAILING_SPACES;
|
||||
}
|
||||
double_conversion::StringToDoubleConverter conv(conv_flags, 0.0, qt_snan(), 0, 0);
|
||||
double_conversion::StringToDoubleConverter conv(conv_flags, 0.0, qt_qnan(), 0, 0);
|
||||
d = conv.StringToDouble(num, numLen, &processed);
|
||||
|
||||
if (!qIsFinite(d)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user