From d60af047fe9586e9fca31248b8d4d4b9c4fabecd Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 7 Feb 2022 15:06:17 +0100 Subject: [PATCH] QUrl: use qOffsetStringArray for idn_whitelist Removes 61 relocations from QtCore: before: $ ~/bin/relinfo.pl libQt6Core.so.6.4.0 libQt6Core.so.6.4.0: 6364 relocations, 5407 relative (84%), 318 PLT entries, 1 for local syms (0%), 0 users after: $ ~/bin/relinfo.pl libQt6Core.so.6.4.0 libQt6Core.so.6.4.0: 6303 relocations, 5346 relative (84%), 318 PLT entries, 1 for local syms (0%), 0 users Pick-to: 6.3 Task-number: QTBUG-100536 Change-Id: I29be3416eaacf7b2049d1e3eec15600d7e7c37c0 Reviewed-by: Qt CI Bot Reviewed-by: Fabian Kosmale --- src/corelib/io/qurlidna.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/corelib/io/qurlidna.cpp b/src/corelib/io/qurlidna.cpp index b3e67fecf70..14208f98eef 100644 --- a/src/corelib/io/qurlidna.cpp +++ b/src/corelib/io/qurlidna.cpp @@ -42,6 +42,7 @@ #include #include +#include #include #include @@ -310,7 +311,7 @@ Q_AUTOTEST_EXPORT QString qt_punycodeDecoder(const QString &pc) return QString::fromStdU32String(output); } -static const char * const idn_whitelist[] = { +static constexpr auto idn_whitelist = qOffsetStringArray( "ac", "ar", "asia", "at", "biz", "br", "cat", "ch", "cl", "cn", "com", @@ -347,8 +348,7 @@ static const char * const idn_whitelist[] = { "xn--wgbh1c", // Egypt "xn--wgbl6a", // Qatar "xn--xkc2al3hye2a" // Sri Lanka -}; -static const size_t idn_whitelist_size = sizeof idn_whitelist / sizeof *idn_whitelist; +); static QStringList *user_idn_whitelist = nullptr; @@ -396,17 +396,17 @@ static bool qt_is_idn_enabled(QStringView aceDomain) return user_idn_whitelist->contains(tldString); int l = 0; - int r = idn_whitelist_size - 1; + int r = idn_whitelist.count() - 1; int i = (l + r + 1) / 2; while (r != l) { - if (lessThan(tld, len, idn_whitelist[i])) + if (lessThan(tld, len, idn_whitelist.at(i))) r = i - 1; else l = i; i = (l + r + 1) / 2; } - return equal(tld, len, idn_whitelist[i]); + return equal(tld, len, idn_whitelist.at(i)); } template @@ -963,10 +963,10 @@ QStringList QUrl::idnWhitelist() return *user_idn_whitelist; static const QStringList list = [] { QStringList list; - list.reserve(idn_whitelist_size); - unsigned int i = 0; - while (i < idn_whitelist_size) { - list << QLatin1String(idn_whitelist[i]); + list.reserve(idn_whitelist.count()); + int i = 0; + while (i < idn_whitelist.count()) { + list << QLatin1String(idn_whitelist.at(i)); ++i; } return list;