summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/tools/qstring.cpp4
-rw-r--r--src/corelib/tools/qunicodetables.cpp1
-rw-r--r--util/unicode/main.cpp7
3 files changed, 8 insertions, 4 deletions
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index f263c0b1db..81fa3bc544 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -6212,8 +6212,8 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar::
return;
if (version == QChar::Unicode_Unassigned) {
- version = UNICODE_DATA_VERSION;
- } else if (version != UNICODE_DATA_VERSION) {
+ version = QChar::currentUnicodeVersion();
+ } else if (int(version) <= NormalizationCorrectionsVersionMax) {
const QString &s = *data;
QChar *d = 0;
for (int i = 0; i < NumNormalizationCorrections; ++i) {
diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp
index 91d260b724..507186dd24 100644
--- a/src/corelib/tools/qunicodetables.cpp
+++ b/src/corelib/tools/qunicodetables.cpp
@@ -8029,6 +8029,7 @@ static const NormalizationCorrection uc_normalization_corrections[] = {
};
enum { NumNormalizationCorrections = 6 };
+enum { NormalizationCorrectionsVersionMax = 7 };
enum { UnicodeBlockCount = 512 }; // number of unicode blocks
enum { UnicodeBlockSize = 128 }; // size of each block
diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp
index 4a11ec667b..2b4a76363f 100644
--- a/util/unicode/main.cpp
+++ b/util/unicode/main.cpp
@@ -1078,7 +1078,7 @@ static void readDerivedNormalizationProps()
struct NormalizationCorrection {
uint codepoint;
uint mapped;
- uint version;
+ int version;
};
static QByteArray createNormalizationCorrections()
@@ -1099,6 +1099,7 @@ static QByteArray createNormalizationCorrections()
"static const NormalizationCorrection uc_normalization_corrections[] = {\n";
+ int maxVersion = 0;
int numCorrections = 0;
while (!f.atEnd()) {
QByteArray line;
@@ -1135,11 +1136,13 @@ static QByteArray createNormalizationCorrections()
out += " { 0x" + QByteArray::number(c.codepoint, 16) + ", 0x" + QByteArray::number(c.mapped, 16)
+ ", " + QString::number(c.version) + " },\n";
++numCorrections;
+ maxVersion = qMax(c.version, maxVersion);
}
out += "};\n\n"
- "enum { NumNormalizationCorrections = " + QByteArray::number(numCorrections) + " };\n\n";
+ "enum { NumNormalizationCorrections = " + QByteArray::number(numCorrections) + " };\n"
+ "enum { NormalizationCorrectionsVersionMax = " + QByteArray::number(maxVersion) + " };\n\n";
return out;
}