summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.vuorela@jolla.com>2019-10-14 17:20:59 +0300
committerPekka Vuorela <pekka.vuorela@jolla.com>2019-10-21 18:28:58 +0300
commit48b1acd2ae088bf6d7ce17c779e5f309759da15b (patch)
tree3c5a692ad83d59e6632ad006994388d566e84500
parent507c4f275b6f1a1e9b1269d9002db4cd762053ca (diff)
Fix url getting broken on openUrl
UTF-8 byte array cannot be split in random position and assume getting valid content on resulting parts. Switched chunk size to be based on characters, encoded size will vary but don't think that should matter. Change-Id: Ic41ea16d2111b1620993b60fdbc6e739929f25d7 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r--src/client/qwaylandwindowmanagerintegration.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/client/qwaylandwindowmanagerintegration.cpp b/src/client/qwaylandwindowmanagerintegration.cpp
index 17ae8a5ae..dd1acaf72 100644
--- a/src/client/qwaylandwindowmanagerintegration.cpp
+++ b/src/client/qwaylandwindowmanagerintegration.cpp
@@ -110,13 +110,17 @@ void QWaylandWindowManagerIntegration::windowmanager_quit()
void QWaylandWindowManagerIntegration::openUrl_helper(const QUrl &url)
{
Q_ASSERT(isInitialized());
- QByteArray data = url.toString().toUtf8();
+ QString data = url.toString();
static const int chunkSize = 128;
while (!data.isEmpty()) {
- QByteArray chunk = data.left(chunkSize);
+ QString chunk = data.left(chunkSize);
data = data.mid(chunkSize);
- open_url(!data.isEmpty(), QString::fromUtf8(chunk));
+ if (chunk.at(chunk.size() - 1).isHighSurrogate() && !data.isEmpty()) {
+ chunk.append(data.at(0));
+ data = data.mid(1);
+ }
+ open_url(!data.isEmpty(), chunk);
}
}