summaryrefslogtreecommitdiffstats
path: root/src/dbus
diff options
context:
space:
mode:
authorAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-04-26 13:58:00 +0300
committerAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-04-29 15:44:30 +0000
commitcd1eff1e1ef3097e5dd1a01f88eb1052ee63022d (patch)
tree1a722931d6d2f85fd2b9b6e8208f4013a6c0e49b /src/dbus
parentd2304a28ca657634253af26ad803c7f292e6f4cc (diff)
qDBusInterfaceFromMetaObject: avoid quadratic complexity.
Don't use QString::prepend() in the loop. Just compose temp string by appending, and then prepend whole temp string. Change-Id: I6efb2d20e03f6a3526103d3a9494d5d1b0fbbf81 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/qdbusmisc.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp
index 0502bea0ac..930c3bd2da 100644
--- a/src/dbus/qdbusmisc.cpp
+++ b/src/dbus/qdbusmisc.cpp
@@ -99,9 +99,14 @@ QString qDBusInterfaceFromMetaObject(const QMetaObject *mo)
if (domainName.isEmpty()) {
interface.prepend(QLatin1String("local."));
} else {
- interface.reserve(interface.size() + organizationDomain.size());
- for (const QStringRef &x : domainName)
- interface.prepend(QLatin1Char('.')).prepend(x);
+ QString composedDomain;
+ // + 1 for additional dot, e.g. organizationDomain equals "example.com",
+ // then composedDomain will be equal "com.example."
+ composedDomain.reserve(organizationDomain.size() + 1);
+ for (auto it = domainName.rbegin(), end = domainName.rend(); it != end; ++it)
+ composedDomain += *it + QLatin1Char('.');
+
+ interface.prepend(composedDomain);
}
}
}