[SCM] qtbase packaging branch, ubuntu, updated. 5.6.1+dfsg-3ubuntu3-11-gd3f17af
Timo Jyrinki
timo at moszumanska.debian.org
Wed Sep 14 19:34:39 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtbase.git;a=commitdiff;h=d3f17af
The following commit has been merged in the ubuntu branch:
commit d3f17af182dc1091845fca00bad2fedb1929b0f2
Author: Timo Jyrinki <timo.jyrinki at iki.fi>
Date: Wed Sep 14 22:34:00 2016 +0300
Revert "debian/patches/Replace-qdtoa-and-qstrtod-implementation-by-a-3rdpar.patch debian/patches/Add-thorough-tests-for-QLocale-string-double-conversions.patch debian/patches/Interpret-precision-128-as-shortest-double-conversio.patch:"
This reverts commit fbf4f37c32b49e9cf743a03c33c3fd33353653ee.
---
debian/changelog | 4 -
...sts-for-QLocale-string-double-conversions.patch | 204 -
...recision-128-as-shortest-double-conversio.patch | 549 --
...oa-and-qstrtod-implementation-by-a-3rdpar.patch | 9992 --------------------
debian/patches/series | 3 -
5 files changed, 10752 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index b89e4de..82e6269 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,10 +6,6 @@ qtbase-opensource-src (5.6.1+dfsg-3ubuntu4) UNRELEASED; urgency=medium
* debian/patches/Fix-gcc-Wsuggest-override-warning-on-Q_OBJECT.patch
debian/patches/Fix-the-GCC-version-supporting-Wsuggest-override.patch:
- Fix GCC -Wsuggest-override warning on Q_OBJECT (LP: #1619483)
- * debian/patches/Replace-qdtoa-and-qstrtod-implementation-by-a-3rdpar.patch
- debian/patches/Add-thorough-tests-for-QLocale-string-double-conversions.patch
- debian/patches/Interpret-precision-128-as-shortest-double-conversio.patch:
- - Fix broken conversion from QVariant to QString (LP: #1620173)
* debian/patches/Fix-parsing-of-tzfile-5-POSIX-rule-zone-names-with-b.patch:
- Fix parsing of rule zone names for certain time zones (LP: #1622089)
* debian/patches/Avoid-artifacts-when-hiding-or-closing-a-QOpenGLWidg.patch
diff --git a/debian/patches/Add-thorough-tests-for-QLocale-string-double-conversions.patch b/debian/patches/Add-thorough-tests-for-QLocale-string-double-conversions.patch
deleted file mode 100644
index be2793a..0000000
--- a/debian/patches/Add-thorough-tests-for-QLocale-string-double-conversions.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-From 0659bb810beec671dc7167e3066ad3646ef5ca8b Mon Sep 17 00:00:00 2001
-From: Ulf Hermann <ulf.hermann at theqtcompany.com>
-Date: Tue, 27 Oct 2015 13:13:10 +0100
-Subject: Add thorough tests for QLocale string/double conversions
-
-We want to be sure that the conversions are independent of the current
-locale set by setlocale(3) and we want to test both directions of the
-conversion.
-
-Change-Id: I01be19e680588478d07fd65a48796e806e681863
-Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart at woboq.com>
----
- tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 121 +++++++++++++++++++++--
- 1 file changed, 114 insertions(+), 7 deletions(-)
-
-diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
-index edaa000..d765a80 100644
---- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
-+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
-@@ -42,6 +42,7 @@
- #include <qdatetime.h>
- #include <qprocess.h>
- #include <float.h>
-+#include <locale.h>
-
- #include <qlocale.h>
- #include <private/qlocale_p.h>
-@@ -140,8 +141,10 @@ private slots:
- void legacyNames();
- void unixLocaleName();
- void matchingLocales();
-- void double_conversion_data();
-- void double_conversion();
-+ void stringToDouble_data();
-+ void stringToDouble();
-+ void doubleToString_data();
-+ void doubleToString();
- void long_long_conversion_data();
- void long_long_conversion();
- void long_long_conversion_extra();
-@@ -664,7 +667,7 @@ void tst_QLocale::unixLocaleName()
- #undef TEST_NAME
- }
-
--void tst_QLocale::double_conversion_data()
-+void tst_QLocale::stringToDouble_data()
- {
- QTest::addColumn<QString>("locale_name");
- QTest::addColumn<QString>("num_str");
-@@ -786,7 +789,7 @@ void tst_QLocale::double_conversion_data()
- QTest::newRow("de_DE 9.876543,0e--2") << QString("de_DE") << QString("9.876543,0e")+QChar(8722)+QString("2") << false << 0.0;
- }
-
--void tst_QLocale::double_conversion()
-+void tst_QLocale::stringToDouble()
- {
- #define MY_DOUBLE_EPSILON (2.22045e-16)
-
-@@ -803,6 +806,11 @@ void tst_QLocale::double_conversion()
- double d = locale.toDouble(num_str, &ok);
- QCOMPARE(ok, good);
-
-+ char *currentLocale = setlocale(LC_ALL, "de_DE");
-+ QCOMPARE(locale.toDouble(num_str, &ok), d); // make sure result is independent of locale
-+ QCOMPARE(ok, good);
-+ setlocale(LC_ALL, currentLocale);
-+
- if (ok) {
- double diff = d - num;
- if (diff < 0)
-@@ -821,6 +829,90 @@ void tst_QLocale::double_conversion()
- }
- }
-
-+void tst_QLocale::doubleToString_data()
-+{
-+ QTest::addColumn<QString>("locale_name");
-+ QTest::addColumn<QString>("num_str");
-+ QTest::addColumn<double>("num");
-+ QTest::addColumn<char>("mode");
-+ QTest::addColumn<int>("precision");
-+
-+ QTest::newRow("C 3.4 f 5") << QString("C") << QString("3.40000") << 3.4 << 'f' << 5;
-+ QTest::newRow("C 3.4 f 0") << QString("C") << QString("3") << 3.4 << 'f' << 0;
-+ QTest::newRow("C 3.4 e 5") << QString("C") << QString("3.40000e+00") << 3.4 << 'e' << 5;
-+ QTest::newRow("C 3.4 e 0") << QString("C") << QString("3e+00") << 3.4 << 'e' << 0;
-+ QTest::newRow("C 3.4 g 5") << QString("C") << QString("3.4") << 3.4 << 'g' << 5;
-+ QTest::newRow("C 3.4 g 1") << QString("C") << QString("3") << 3.4 << 'g' << 1;
-+
-+ QTest::newRow("C 3.4 f 1") << QString("C") << QString("3.4") << 3.4 << 'f' << 1;
-+ QTest::newRow("C 3.4 e 1") << QString("C") << QString("3.4e+00") << 3.4 << 'e' << 1;
-+ QTest::newRow("C 3.4 g 2") << QString("C") << QString("3.4") << 3.4 << 'g' << 2;
-+
-+ QTest::newRow("de_DE 3,4 f 1") << QString("de_DE") << QString("3,4") << 3.4 << 'f' << 1;
-+ QTest::newRow("de_DE 3,4 e 1") << QString("de_DE") << QString("3,4e+00") << 3.4 << 'e' << 1;
-+ QTest::newRow("de_DE 3,4 g 2") << QString("de_DE") << QString("3,4") << 3.4 << 'g' << 2;
-+
-+ QTest::newRow("C 0.035003945 f 12") << QString("C") << QString("0.035003945000") << 0.035003945 << 'f' << 12;
-+ QTest::newRow("C 0.035003945 f 6") << QString("C") << QString("0.035004") << 0.035003945 << 'f' << 6;
-+ QTest::newRow("C 0.035003945 e 10") << QString("C") << QString("3.5003945000e-02") << 0.035003945 << 'e' << 10;
-+ QTest::newRow("C 0.035003945 e 4") << QString("C") << QString("3.5004e-02") << 0.035003945 << 'e' << 4;
-+ QTest::newRow("C 0.035003945 g 11") << QString("C") << QString("0.035003945") << 0.035003945 << 'g' << 11;
-+ QTest::newRow("C 0.035003945 g 5") << QString("C") << QString("0.035004") << 0.035003945 << 'g' << 5;
-+
-+ QTest::newRow("C 0.035003945 f 9") << QString("C") << QString("0.035003945") << 0.035003945 << 'f' << 9;
-+ QTest::newRow("C 0.035003945 e 7") << QString("C") << QString("3.5003945e-02") << 0.035003945 << 'e' << 7;
-+ QTest::newRow("C 0.035003945 g 8") << QString("C") << QString("0.035003945") << 0.035003945 << 'g' << 8;
-+
-+ QTest::newRow("de_DE 0,035003945 f 9") << QString("de_DE") << QString("0,035003945") << 0.035003945 << 'f' << 9;
-+ QTest::newRow("de_DE 0,035003945 e 7") << QString("de_DE") << QString("3,5003945e-02") << 0.035003945 << 'e' << 7;
-+ QTest::newRow("de_DE 0,035003945 g 8") << QString("de_DE") << QString("0,035003945") << 0.035003945 << 'g' << 8;
-+
-+ QTest::newRow("C 0.000003945 f 12") << QString("C") << QString("0.000003945000") << 0.000003945 << 'f' << 12;
-+ QTest::newRow("C 0.000003945 f 6") << QString("C") << QString("0.000004") << 0.000003945 << 'f' << 6;
-+ QTest::newRow("C 0.000003945 e 6") << QString("C") << QString("3.945000e-06") << 0.000003945 << 'e' << 6;
-+ QTest::newRow("C 0.000003945 e 0") << QString("C") << QString("4e-06") << 0.000003945 << 'e' << 0;
-+ QTest::newRow("C 0.000003945 g 7") << QString("C") << QString("3.945e-06") << 0.000003945 << 'g' << 7;
-+ QTest::newRow("C 0.000003945 g 1") << QString("C") << QString("4e-06") << 0.000003945 << 'g' << 1;
-+
-+ QTest::newRow("C 0.000003945 f 9") << QString("C") << QString("0.000003945") << 0.000003945 << 'f' << 9;
-+ QTest::newRow("C 0.000003945 e 3") << QString("C") << QString("3.945e-06") << 0.000003945 << 'e' << 3;
-+ QTest::newRow("C 0.000003945 g 4") << QString("C") << QString("3.945e-06") << 0.000003945 << 'g' << 4;
-+
-+ QTest::newRow("de_DE 0,000003945 f 9") << QString("de_DE") << QString("0,000003945") << 0.000003945 << 'f' << 9;
-+ QTest::newRow("de_DE 0,000003945 e 3") << QString("de_DE") << QString("3,945e-06") << 0.000003945 << 'e' << 3;
-+ QTest::newRow("de_DE 0,000003945 g 4") << QString("de_DE") << QString("3,945e-06") << 0.000003945 << 'g' << 4;
-+
-+ QTest::newRow("C 12456789012 f 3") << QString("C") << QString("12456789012.000") << 12456789012.0 << 'f' << 3;
-+ QTest::newRow("C 12456789012 e 13") << QString("C") << QString("1.2456789012000e+10") << 12456789012.0 << 'e' << 13;
-+ QTest::newRow("C 12456789012 e 7") << QString("C") << QString("1.2456789e+10") << 12456789012.0 << 'e' << 7;
-+ QTest::newRow("C 12456789012 g 14") << QString("C") << QString("12456789012") << 12456789012.0 << 'g' << 14;
-+ QTest::newRow("C 12456789012 g 8") << QString("C") << QString("1.2456789e+10") << 12456789012.0 << 'g' << 8;
-+
-+ QTest::newRow("C 12456789012 f 0") << QString("C") << QString("12456789012") << 12456789012.0 << 'f' << 0;
-+ QTest::newRow("C 12456789012 e 10") << QString("C") << QString("1.2456789012e+10") << 12456789012.0 << 'e' << 10;
-+ QTest::newRow("C 12456789012 g 11") << QString("C") << QString("12456789012") << 12456789012.0 << 'g' << 11;
-+
-+ QTest::newRow("de_DE 12456789012 f 0") << QString("de_DE") << QString("12.456.789.012") << 12456789012.0 << 'f' << 0;
-+ QTest::newRow("de_DE 12456789012 e 10") << QString("de_DE") << QString("1,2456789012e+10") << 12456789012.0 << 'e' << 10;
-+ QTest::newRow("de_DE 12456789012 g 11") << QString("de_DE") << QString("12.456.789.012") << 12456789012.0 << 'g' << 11;
-+}
-+
-+void tst_QLocale::doubleToString()
-+{
-+ QFETCH(QString, locale_name);
-+ QFETCH(QString, num_str);
-+ QFETCH(double, num);
-+ QFETCH(char, mode);
-+ QFETCH(int, precision);
-+
-+ const QLocale locale(locale_name);
-+ QCOMPARE(locale.toString(num, mode, precision), num_str);
-+
-+ char *currentLocale = setlocale(LC_ALL, "de_DE");
-+ QCOMPARE(locale.toString(num, mode, precision), num_str);
-+ setlocale(LC_ALL, currentLocale);
-+}
-+
- void tst_QLocale::long_long_conversion_data()
- {
- QTest::addColumn<QString>("locale_name");
-@@ -952,7 +1044,8 @@ void tst_QLocale::fpExceptions()
- #define _EM_INEXACT 0x00000001
- #endif
-
-- // check that qdtoa doesn't throw floating point exceptions when they are enabled
-+ // check that double-to-string conversion doesn't throw floating point exceptions when they are
-+ // enabled
- #ifdef Q_OS_WIN
- unsigned int oldbits = _control87(0, 0);
- _control87( 0 | _EM_INEXACT, _MCW_EM );
-@@ -1830,13 +1923,27 @@ void tst_QLocale::underflowOverflow()
- a(QLatin1String("0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e10"));
-
- bool ok = false;
-- a.toDouble(&ok);
-+ double d = a.toDouble(&ok);
- QVERIFY(!ok);
-+ QCOMPARE(d, 0.0);
-
- a = QLatin1String("1e600");
- ok = false;
-- a.toDouble(&ok);
-+ d = a.toDouble(&ok);
-+ QVERIFY(!ok); // detectable overflow
-+ QCOMPARE(d, 0.0);
-+
-+ a = QLatin1String("-1e600");
-+ ok = false;
-+ d = a.toDouble(&ok);
-+ QVERIFY(!ok); // detectable underflow
-+ QCOMPARE(d, 0.0);
-+
-+ a = QLatin1String("1e-600");
-+ ok = false;
-+ d = a.toDouble(&ok);
- QVERIFY(!ok);
-+ QCOMPARE(d, 0.0);
-
- a = QLatin1String("-9223372036854775809");
- a.toLongLong(&ok);
---
-cgit v1.0-4-g1e03
-
diff --git a/debian/patches/Interpret-precision-128-as-shortest-double-conversio.patch b/debian/patches/Interpret-precision-128-as-shortest-double-conversio.patch
deleted file mode 100644
index 7a97525..0000000
--- a/debian/patches/Interpret-precision-128-as-shortest-double-conversio.patch
+++ /dev/null
@@ -1,549 +0,0 @@
-From 726fed0d67013cbfac7921d3d4613ca83406fb0f Mon Sep 17 00:00:00 2001
-From: Ulf Hermann <ulf.hermann at theqtcompany.com>
-Date: Fri, 16 Oct 2015 16:52:51 +0200
-Subject: [PATCH] Interpret precision == -128 as "shortest" double conversion
-
-Also use this for converting doubles with QVariant. We generally want
-exact results there, rather than adding rounding errors whenever we
-convert.
-
-[ChangeLog][QtCore][QLocale] Added special value for double conversion
-precision to get shortest accurate representation.
-
-Change-Id: I905b8a103f39adf31d24b6ce2c8a283cf271b597
-Reviewed-by: Lars Knoll <lars.knoll at theqtcompany.com>
----
- src/corelib/kernel/qvariant.cpp | 21 ++----
- src/corelib/tools/qlocale.cpp | 21 +++++-
- src/corelib/tools/qlocale.h | 4 ++
- src/corelib/tools/qlocale.qdoc | 17 +++++
- src/corelib/tools/qlocale_tools.cpp | 30 +++++---
- src/corelib/tools/qlocale_tools_p.h | 4 +-
- tests/auto/corelib/kernel/qvariant/qvariant.pro | 5 +-
- .../auto/corelib/kernel/qvariant/tst_qvariant.cpp | 51 ++++++++++---
- tests/auto/corelib/tools/qlocale/test/test.pro | 4 ++
- tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 83 +++++++++++++++-------
- 10 files changed, 173 insertions(+), 67 deletions(-)
-
-diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
-index fdcbdb1..1e755cf 100644
---- a/src/corelib/kernel/qvariant.cpp
-+++ b/src/corelib/kernel/qvariant.cpp
-@@ -56,6 +56,7 @@
- #include "qbytearraylist.h"
- #endif
- #include "private/qvariant_p.h"
-+#include "private/qlocale_p.h"
- #include "qmetatype_p.h"
- #include <qmetaobject.h>
-
-@@ -71,18 +72,6 @@
-
- QT_BEGIN_NAMESPACE
-
--#ifndef DBL_MANT_DIG
--# define DBL_MANT_DIG 53
--#endif
--#ifndef FLT_MANT_DIG
--# define FLT_MANT_DIG 24
--#endif
--
--const int log10_2_10000 = 30103; // log10(2) * 100000
--// same as C++11 std::numeric_limits<T>::max_digits10
--const int max_digits10_double = (DBL_MANT_DIG * log10_2_10000) / 100000 + 2;
--const int max_digits10_float = (FLT_MANT_DIG * log10_2_10000) / 100000 + 2;
--
- namespace {
- class HandlersManager
- {
-@@ -433,10 +422,10 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok)
- *str = QString::number(qMetaTypeUNumber(d));
- break;
- case QMetaType::Float:
-- *str = QString::number(d->data.f, 'g', max_digits10_float);
-+ *str = QString::number(d->data.f, 'g', QLocale::FloatingPointShortest);
- break;
- case QVariant::Double:
-- *str = QString::number(d->data.d, 'g', max_digits10_double);
-+ *str = QString::number(d->data.d, 'g', QLocale::FloatingPointShortest);
- break;
- #if !defined(QT_NO_DATESTRING)
- case QVariant::Date:
-@@ -625,10 +614,10 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok)
- *ba = v_cast<QString>(d)->toUtf8();
- break;
- case QVariant::Double:
-- *ba = QByteArray::number(d->data.d, 'g', max_digits10_double);
-+ *ba = QByteArray::number(d->data.d, 'g', QLocale::FloatingPointShortest);
- break;
- case QMetaType::Float:
-- *ba = QByteArray::number(d->data.f, 'g', max_digits10_float);
-+ *ba = QByteArray::number(d->data.f, 'g', QLocale::FloatingPointShortest);
- break;
- case QMetaType::Char:
- case QMetaType::SChar:
-diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
-index dcb77a2..072d62f 100644
---- a/src/corelib/tools/qlocale.cpp
-+++ b/src/corelib/tools/qlocale.cpp
-@@ -2743,7 +2743,7 @@ QString QLocaleData::doubleToString(const QChar _zero, const QChar plus, const Q
- const QChar exponential, const QChar group, const QChar decimal,
- double d, int precision, DoubleForm form, int width, unsigned flags)
- {
-- if (precision < 0)
-+ if (precision != QLocale::FloatingPointShortest && precision < 0)
- precision = 6;
- if (width < 0)
- width = 0;
-@@ -2753,7 +2753,9 @@ QString QLocaleData::doubleToString(const QChar _zero, const QChar plus, const Q
-
- int decpt;
- int bufSize = 1;
-- if (form == DFDecimal) // optimize for numbers smaller than 512k
-+ if (precision == QLocale::FloatingPointShortest)
-+ bufSize += DoubleMaxSignificant;
-+ else if (form == DFDecimal) // optimize for numbers between -512k and 512k
- bufSize += ((d > (1 << 19) || d < -(1 << 19)) ? DoubleMaxDigitsBeforeDecimal : 6) +
- precision;
- else // Add extra digit due to different interpretations of precision. Also, "nan" has to fit.
-@@ -2798,7 +2800,20 @@ QString QLocaleData::doubleToString(const QChar _zero, const QChar plus, const Q
- PrecisionMode mode = (flags & Alternate) ?
- PMSignificantDigits : PMChopTrailingZeros;
-
-- if (decpt != digits.length() && (decpt <= -4 || decpt > precision))
-+ int cutoff = precision < 0 ? 6 : precision;
-+ // Find out which representation is shorter
-+ if (precision == QLocale::FloatingPointShortest && decpt > 0) {
-+ cutoff = digits.length() + 4; // 'e', '+'/'-', one digit exponent
-+ if (decpt <= 10) {
-+ ++cutoff;
-+ } else {
-+ cutoff += decpt > 100 ? 2 : 1;
-+ }
-+ if (!always_show_decpt && digits.length() > decpt)
-+ ++cutoff; // decpt shown in exponent form, but not in decimal form
-+ }
-+
-+ if (decpt != digits.length() && (decpt <= -4 || decpt > cutoff))
- num_str = exponentForm(_zero, decimal, exponential, group, plus, minus,
- digits, decpt, precision, mode,
- always_show_decpt);
-diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
-index 729fd73..f64a25b 100644
---- a/src/corelib/tools/qlocale.h
-+++ b/src/corelib/tools/qlocale.h
-@@ -848,6 +848,10 @@ public:
- };
- Q_DECLARE_FLAGS(NumberOptions, NumberOption)
-
-+ enum FloatingPointPrecisionOption {
-+ FloatingPointShortest = -128
-+ };
-+
- enum CurrencySymbolFormat {
- CurrencyIsoCode,
- CurrencySymbol,
-diff --git a/src/corelib/tools/qlocale.qdoc b/src/corelib/tools/qlocale.qdoc
-index c87e67c..03095d8 100644
---- a/src/corelib/tools/qlocale.qdoc
-+++ b/src/corelib/tools/qlocale.qdoc
-@@ -941,6 +941,23 @@
- */
-
- /*!
-+ \enum QLocale::FloatingPointPrecisionOption
-+
-+ This enum defines constants that can be given as precision to QString::number(),
-+ QByteArray::number(), and QLocale::toString() when converting floats or doubles,
-+ in order to express a variable number of digits as precision.
-+
-+
alue FloatingPointShortest The conversion algorithm will try to find the
-+ shortest accurate representation for the given number. "Accurate" means
-+ that you get the exact same number back from an inverse conversion on
-+ the generated string representation.
-+
-+ \sa toString(), QString, QByteArray
-+
-+ \since 5.7
-+*/
-+
-+/*!
- \enum QLocale::MeasurementSystem
-
- This enum defines which units are used for measurement.
-diff --git a/src/corelib/tools/qlocale_tools.cpp b/src/corelib/tools/qlocale_tools.cpp
-index 18d1096..890f63a 100644
---- a/src/corelib/tools/qlocale_tools.cpp
-+++ b/src/corelib/tools/qlocale_tools.cpp
-@@ -114,10 +114,16 @@ void doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char *
- if (form == QLocaleData::DFExponent && precision >= 0)
- ++precision;
-
-- double_conversion::DoubleToStringConverter::DoubleToAscii(d,
-- form == QLocaleData::DFDecimal ? double_conversion::DoubleToStringConverter::FIXED :
-- double_conversion::DoubleToStringConverter::PRECISION,
-- precision, buf, bufSize, &sign, &length, &decpt);
-+ double_conversion::DoubleToStringConverter::DtoaMode mode;
-+ if (precision == QLocale::FloatingPointShortest) {
-+ mode = double_conversion::DoubleToStringConverter::SHORTEST;
-+ } else if (form == QLocaleData::DFSignificantDigits || form == QLocaleData::DFExponent) {
-+ mode = double_conversion::DoubleToStringConverter::PRECISION;
-+ } else {
-+ mode = double_conversion::DoubleToStringConverter::FIXED;
-+ }
-+ double_conversion::DoubleToStringConverter::DoubleToAscii(d, mode, precision, buf, bufSize,
-+ &sign, &length, &decpt);
- #else // QT_NO_DOUBLECONVERSION || QT_BOOTSTRAPPED
-
- // Cut the precision at 999, to fit it into the format string. We can't get more than 17
-@@ -126,6 +132,8 @@ void doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char *
- // to honor higher precisions. We define that at more than 999 digits that is not the case.
- if (precision > 999)
- precision = 999;
-+ else if (precision == QLocale::FloatingPointShortest)
-+ precision = QLocaleData::DoubleMaxSignificant; // "shortest" mode not supported by snprintf
-
- if (isZero(d)) {
- // Negative zero is expected as simple "0", not "-0". We cannot do d < 0, though.
-@@ -442,7 +450,7 @@ QString qlltoa(qlonglong l, int base, const QChar zero)
- }
-
- QString &decimalForm(QChar zero, QChar decimal, QChar group,
-- QString &digits, int decpt, uint precision,
-+ QString &digits, int decpt, int precision,
- PrecisionMode pm,
- bool always_show_decpt,
- bool thousands_group)
-@@ -459,11 +467,11 @@ QString &decimalForm(QChar zero, QChar decimal, QChar group,
-
- if (pm == PMDecimalDigits) {
- uint decimal_digits = digits.length() - decpt;
-- for (uint i = decimal_digits; i < precision; ++i)
-+ for (int i = decimal_digits; i < precision; ++i)
- digits.append(zero);
- }
- else if (pm == PMSignificantDigits) {
-- for (uint i = digits.length(); i < precision; ++i)
-+ for (int i = digits.length(); i < precision; ++i)
- digits.append(zero);
- }
- else { // pm == PMChopTrailingZeros
-@@ -485,18 +493,18 @@ QString &decimalForm(QChar zero, QChar decimal, QChar group,
-
- QString &exponentForm(QChar zero, QChar decimal, QChar exponential,
- QChar group, QChar plus, QChar minus,
-- QString &digits, int decpt, uint precision,
-+ QString &digits, int decpt, int precision,
- PrecisionMode pm,
- bool always_show_decpt)
- {
- int exp = decpt - 1;
-
- if (pm == PMDecimalDigits) {
-- for (uint i = digits.length(); i < precision + 1; ++i)
-+ for (int i = digits.length(); i < precision + 1; ++i)
- digits.append(zero);
- }
- else if (pm == PMSignificantDigits) {
-- for (uint i = digits.length(); i < precision; ++i)
-+ for (int i = digits.length(); i < precision; ++i)
- digits.append(zero);
- }
- else { // pm == PMChopTrailingZeros
-@@ -534,7 +542,7 @@ QString qdtoa(qreal d, int *decpt, int *sign)
-
- // Some versions of libdouble-conversion like an extra digit, probably for '
--
qtbase packaging
More information about the pkg-kde-commits
mailing list