From 6fa74764d91e876162e2a992a4087aaf4082c001 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Fri, 3 Jun 2016 12:07:46 +0200 Subject: WinRT: Avoid asserts in socket function with bool return values There is no need for the functions to assert. By returning false they show that something went wrong and the error will be handled gracefully. Change-Id: Ib026adf5c6fb23b5e6b5598533caec3b3669220c Reviewed-by: Maurice Kalinowski --- src/network/socket/qnativesocketengine_winrt.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/network') diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index 4547a0cbe4..58f0668854 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -321,11 +321,14 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) Q_ASSERT_SUCCEEDED(hr); d->socketState = QAbstractSocket::ConnectingState; - hr = QEventDispatcherWinRT::runOnXamlThread([d]() { - return d->connectOp->put_Completed(Callback( + QEventDispatcherWinRT::runOnXamlThread([d, &hr]() { + hr = d->connectOp->put_Completed(Callback( d, &QNativeSocketEnginePrivate::handleConnectOpFinished).Get()); + RETURN_OK_IF_FAILED("connectToHostByName: Could not register \"connectOp\" callback"); + return S_OK; }); - Q_ASSERT_SUCCEEDED(hr); + if (FAILED(hr)) + return false; return d->socketState == QAbstractSocket::ConnectedState; } @@ -865,20 +868,22 @@ bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType soc case QAbstractSocket::TcpSocket: { ComPtr socket; hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); - Q_ASSERT_SUCCEEDED(hr); + RETURN_FALSE_IF_FAILED("createNewSocket: Could not create socket instance"); socketDescriptor = qintptr(socket.Detach()); break; } case QAbstractSocket::UdpSocket: { ComPtr socket; hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); - Q_ASSERT_SUCCEEDED(hr); + RETURN_FALSE_IF_FAILED("createNewSocket: Could not create socket instance"); socketDescriptor = qintptr(socket.Detach()); - hr = QEventDispatcherWinRT::runOnXamlThread([this]() { - HRESULT hr = udpSocket()->add_MessageReceived(Callback(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); - return hr; + QEventDispatcherWinRT::runOnXamlThread([&hr, this]() { + hr = udpSocket()->add_MessageReceived(Callback(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + RETURN_OK_IF_FAILED("createNewSocket: Could not add \"message received\" callback") + return S_OK; }); - Q_ASSERT_SUCCEEDED(hr); + if (FAILED(hr)) + return false; break; } default: -- cgit v1.2.3