diff --git a/repos/libports/ports/qt5.hash b/repos/libports/ports/qt5.hash index d229fbfc03..26e70c0d80 100644 --- a/repos/libports/ports/qt5.hash +++ b/repos/libports/ports/qt5.hash @@ -1 +1 @@ -821f07b61827f72f0efa968453ae521bf19fa6e8 +4d7c2192509a580b54ac069e68f1e9ac4d9159bd diff --git a/repos/libports/src/lib/qt5/patches/qt5_qtwebkit_socketstreamhandle.patch b/repos/libports/src/lib/qt5/patches/qt5_qtwebkit_socketstreamhandle.patch new file mode 100644 index 0000000000..6fb9edfa9d --- /dev/null +++ b/repos/libports/src/lib/qt5/patches/qt5_qtwebkit_socketstreamhandle.patch @@ -0,0 +1,54 @@ +qt5_qtwebkit_socketstreamhandle.patch + +From: Christian Prochaska + + +--- + .../network/qt/SocketStreamHandlePrivate.h | 1 + + .../platform/network/qt/SocketStreamHandleQt.cpp | 14 ++++++++++++++ + 2 files changed, 15 insertions(+) + +diff --git a/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h b/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h +index f447cc2..4e79275 100644 +--- a/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h ++++ b/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandlePrivate.h +@@ -65,6 +65,7 @@ public Q_SLOTS: + #endif + public: + void initConnections(); ++ void init(const KURL& url); + QTcpSocket* m_socket; + SocketStreamHandle* m_streamHandle; + }; +diff --git a/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp b/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp +index 271edd8..818fada 100644 +--- a/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp ++++ b/qtwebkit/Source/WebCore/platform/network/qt/SocketStreamHandleQt.cpp +@@ -57,6 +57,19 @@ SocketStreamHandlePrivate::SocketStreamHandlePrivate(SocketStreamHandle* streamH + return; + + initConnections(); ++ } ++ ++/* ++ * This code was factored out from the constructor, because its execution can ++ * end up in 'SocketStreamHandle::platformSend()', which needs the ++ * 'SocketStreamHandle::m_p' member, which gets initialized only after the ++ * constructor returned. ++ * ++ * Genode issue #1677 ++ */ ++void SocketStreamHandlePrivate::init(const KURL& url) ++{ ++ bool isSecure = url.protocolIs("wss"); + + unsigned int port = url.hasPort() ? url.port() : (isSecure ? 443 : 80); + +@@ -184,6 +197,7 @@ SocketStreamHandle::SocketStreamHandle(const KURL& url, SocketStreamHandleClient + { + LOG(Network, "SocketStreamHandle %p new client %p", this, m_client); + m_p = new SocketStreamHandlePrivate(this, url); ++ m_p->init(url); + } + + SocketStreamHandle::SocketStreamHandle(QTcpSocket* socket, SocketStreamHandleClient* client) diff --git a/repos/libports/src/lib/qt5/patches/series b/repos/libports/src/lib/qt5/patches/series index 48d58fdec8..b1cf571410 100644 --- a/repos/libports/src/lib/qt5/patches/series +++ b/repos/libports/src/lib/qt5/patches/series @@ -11,6 +11,7 @@ qt5_qwidgetwindow.patch qt5_qtscript.patch qt5_qtnetwork.patch qt5_qtwebkit.patch +qt5_qtwebkit_socketstreamhandle.patch qt5_textedit_example.patch qt5_openglwindow_example.patch qt5_qml.patch