diff options
Diffstat (limited to 'src/network/socket')
-rw-r--r-- | src/network/socket/qlocalserver.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine_winrt.cpp | 8 | ||||
-rw-r--r-- | src/network/socket/qsctpserver.cpp | 7 | ||||
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/socket.pri | 2 |
5 files changed, 13 insertions, 8 deletions
diff --git a/src/network/socket/qlocalserver.cpp b/src/network/socket/qlocalserver.cpp index c5bd599a51..3e36a7b229 100644 --- a/src/network/socket/qlocalserver.cpp +++ b/src/network/socket/qlocalserver.cpp @@ -408,7 +408,7 @@ int QLocalServer::maxPendingConnections() const still a good idea to delete the object explicitly when you are done with it, to avoid wasting memory. - 0 is returned if this function is called when there are no pending + \nullptr is returned if this function is called when there are no pending connections. \sa hasPendingConnections(), newConnection(), incomingConnection() diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index 7ac6297de6..2eb2141fee 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -875,8 +875,14 @@ void QNativeSocketEngine::close() if (d->closingDown) return; - if (d->pendingReadNotification) + if (d->pendingReadNotification) { + // We use QPointer here to see if this QNativeSocketEngine was deleted as a result of + // finishing and cleaning up a network request when calling "processReadReady". + QPointer<QNativeSocketEngine> alive(this); processReadReady(); + if (alive.isNull()) + return; + } d->closingDown = true; diff --git a/src/network/socket/qsctpserver.cpp b/src/network/socket/qsctpserver.cpp index 77cb997192..2aa694b3fd 100644 --- a/src/network/socket/qsctpserver.cpp +++ b/src/network/socket/qsctpserver.cpp @@ -229,13 +229,12 @@ QSctpSocket *QSctpServer::nextPendingDatagramConnection() { Q_D(QSctpServer); - QMutableListIterator<QTcpSocket *> i(d->pendingConnections); - while (i.hasNext()) { - QSctpSocket *socket = qobject_cast<QSctpSocket *>(i.next()); + for (auto it = d->pendingConnections.begin(), end = d->pendingConnections.end(); it != end; ++it) { + QSctpSocket *socket = qobject_cast<QSctpSocket *>(*it); Q_ASSERT(socket); if (socket->isInDatagramMode()) { - i.remove(); + d->pendingConnections.erase(it); Q_ASSERT(d->socketEngine); d->socketEngine->setReadNotificationEnabled(true); return socket; diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 56c700ca8f..98e58192a2 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -548,7 +548,7 @@ bool QTcpServer::hasPendingConnections() const destroyed. It is still a good idea to delete the object explicitly when you are done with it, to avoid wasting memory. - 0 is returned if this function is called when there are no pending + \nullptr is returned if this function is called when there are no pending connections. \note The returned QTcpSocket object cannot be used from another diff --git a/src/network/socket/socket.pri b/src/network/socket/socket.pri index 44ff5b7b39..c3a98ea31a 100644 --- a/src/network/socket/socket.pri +++ b/src/network/socket/socket.pri @@ -58,7 +58,7 @@ unix { msvc: QMAKE_MOC_OPTIONS += -D_WINSOCK_DEPRECATED_NO_WARNINGS win32:!winrt:SOURCES += socket/qnativesocketengine_win.cpp -win32:!winrt:LIBS_PRIVATE += -ladvapi32 +win32:!winrt: QMAKE_USE_PRIVATE += advapi32 winrt { SOURCES += socket/qnativesocketengine_winrt.cpp |