diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-10-15 15:40:26 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-11-02 17:00:50 +0000 |
commit | 8c2ca33073f20e1fe552bd8b5f663aec5b8a634d (patch) | |
tree | a8277e71b865e3e08908a4937668e163c35a03e6 /src/corelib/tools/qbytearray.cpp | |
parent | 84042523f272c1d30247e9329eea21036ff793f4 (diff) |
Replace qdtoa and qstrtod implementation by a 3rdparty library
This also fixes the underlying cause of QTBUG-44039 and QTBUG-43885.
You can choose between system, qt, and no libdouble-conversion
support. If you choose "no", snprintf_l and sscanf_l will be
used.
By default, system double conversion is used if the system provides a
double-conversion library. Otherwise the bundled libdouble-conversion
is built. sscanf_l and snprintf_l are not used by default as the
planned "shortest" conversion mode to produce the shortest possible
string will give less precise results when implemented with snprintf_l.
Change-Id: I8ca08a0fca5c54cf7009e48e771385614f6aa031
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/corelib/tools/qbytearray.cpp')
-rw-r--r-- | src/corelib/tools/qbytearray.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index c223c9de6c..3a6f5afa60 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -39,6 +39,7 @@ #include "qlist.h" #include "qlocale.h" #include "qlocale_p.h" +#include "qlocale_tools_p.h" #include "qstringalgorithms_p.h" #include "qscopedpointer.h" #include "qbytearray_p.h" @@ -3694,7 +3695,13 @@ ushort QByteArray::toUShort(bool *ok, int base) const double QByteArray::toDouble(bool *ok) const { - return QLocaleData::bytearrayToDouble(nulTerminated().constData(), ok); + QByteArray nulled = nulTerminated(); + bool nonNullOk = false; + int processed = 0; + double d = asciiToDouble(nulled.constData(), nulled.length(), nonNullOk, processed); + if (ok) + *ok = nonNullOk; + return d; } /*! |