diff options
author | Liang Qi <liang.qi@qt.io> | 2017-04-12 10:20:28 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-04-12 10:20:28 +0200 |
commit | a5984f0a63233e0e9608ce8ab66e6d2d0e6948e3 (patch) | |
tree | 0bc15fb9c75bdb98ec58cb56b9cdb96f9c0e8496 /src/xmlpatterns/schema | |
parent | 141d12bd6d8c51bc92128654a084b36c6b747120 (diff) | |
parent | 3a44e86cdceba7acc6b830274968b0dfa482f5a8 (diff) | |
download | qtxmlpatterns-a5984f0a63233e0e9608ce8ab66e6d2d0e6948e3.tar.gz |
Merge remote-tracking branch 'origin/5.9' into dev
Change-Id: Iea8a806a7fe03bc52ffdae10b8459ce6cc275cc6
Diffstat (limited to 'src/xmlpatterns/schema')
-rw-r--r-- | src/xmlpatterns/schema/qxsdtypechecker.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/xmlpatterns/schema/qxsdtypechecker.cpp b/src/xmlpatterns/schema/qxsdtypechecker.cpp index d6b224f..d165a1f 100644 --- a/src/xmlpatterns/schema/qxsdtypechecker.cpp +++ b/src/xmlpatterns/schema/qxsdtypechecker.cpp @@ -150,14 +150,14 @@ static int totalDigitsForDecimal(const QString &lexicalValue) static int fractionDigitsForDecimal(const QString &lexicalValue) { - // we use the lexical value here, as the conversion to double might strip - // away decimal positions - bool ok = false; - double dbl = lexicalValue.toDouble(&ok); - if (!ok) + const int pos = lexicalValue.indexOf(QLatin1Char('.')); + if (pos == -1) return 0; - dbl = dbl - qFloor(dbl); - return QString::number(dbl).length() - 2; + const QStringRef fraction = QStringRef(&lexicalValue).mid(pos).trimmed(); + int i = fraction.length() - 1; // fraction[0] is '.' so fraction is not empty + while (fraction.at(i) == QLatin1Char('0')) + --i; + return i; // The significant fraction-digits are fraction[1 through i]. } XsdTypeChecker::XsdTypeChecker(const XsdSchemaContext::Ptr &context, const QVector<QXmlName> &namespaceBindings, const QSourceLocation &location) |