From 6b9a9a01e289381ea915ac43595c6c5da0db73b4 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Fri, 23 May 2014 17:16:54 +0200 Subject: remove HSTRING instances HSTRING needs to be released or handles will be leaked. Instead use HString which takes care of resource management on its own. Task-Number: QTBUG-38115 Change-Id: I2c767776c1f22f45acd8dd77b693f30d63d894b9 Reviewed-by: Andrew Knight Reviewed-by: Oliver Wolff --- src/network/kernel/qdnslookup_winrt.cpp | 12 ++--- src/network/kernel/qhostinfo_winrt.cpp | 24 +++++----- src/network/kernel/qnetworkinterface_winrt.cpp | 6 +-- src/network/socket/qnativesocketengine_winrt.cpp | 56 ++++++++++++------------ 4 files changed, 49 insertions(+), 49 deletions(-) (limited to 'src/network') diff --git a/src/network/kernel/qdnslookup_winrt.cpp b/src/network/kernel/qdnslookup_winrt.cpp index 6ac944934a..08f3167a29 100644 --- a/src/network/kernel/qdnslookup_winrt.cpp +++ b/src/network/kernel/qdnslookup_winrt.cpp @@ -98,9 +98,9 @@ void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestN GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &datagramSocketStatics); IAsyncOperation *> *op; - HSTRING proto; - WindowsCreateString(L"0", 1, &proto); - datagramSocketStatics->GetEndpointPairsAsync(host, proto, &op); + datagramSocketStatics->GetEndpointPairsAsync(host, + HString::MakeReference(L"0").Get(), + &op); datagramSocketStatics->Release(); host->Release(); @@ -134,11 +134,11 @@ void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestN || (type == HostNameType_Ipv6 && requestType == QDnsLookup::A)))) continue; - HSTRING name; - remoteHost->get_CanonicalName(&name); + HString name; + remoteHost->get_CanonicalName(name.GetAddressOf()); remoteHost->Release(); UINT32 length; - PCWSTR rawString = WindowsGetStringRawBuffer(name, &length); + PCWSTR rawString = name.GetRawBuffer(&length); QDnsHostAddressRecord record; record.d->name = aceHostname; record.d->value = QHostAddress(QString::fromWCharArray(rawString, length)); diff --git a/src/network/kernel/qhostinfo_winrt.cpp b/src/network/kernel/qhostinfo_winrt.cpp index 92897f563d..e02cd98e08 100644 --- a/src/network/kernel/qhostinfo_winrt.cpp +++ b/src/network/kernel/qhostinfo_winrt.cpp @@ -95,9 +95,9 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &datagramSocketStatics); IAsyncOperation *> *op; - HSTRING proto; - WindowsCreateString(L"0", 1, &proto); - datagramSocketStatics->GetEndpointPairsAsync(host, proto, &op); + datagramSocketStatics->GetEndpointPairsAsync(host, + HString::MakeReference(L"0").Get(), + &op); datagramSocketStatics->Release(); host->Release(); @@ -131,11 +131,11 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) if (type == HostNameType_DomainName) continue; - HSTRING name; - remoteHost->get_CanonicalName(&name); + HString name; + remoteHost->get_CanonicalName(name.GetAddressOf()); remoteHost->Release(); UINT32 length; - PCWSTR rawString = WindowsGetStringRawBuffer(name, &length); + PCWSTR rawString = name.GetRawBuffer(&length); QHostAddress addr; addr.setAddress(QString::fromWCharArray(rawString, length)); if (!addresses.contains(addr)) @@ -170,22 +170,22 @@ QString QHostInfo::localHostName() if (type != HostNameType_DomainName) continue; - HSTRING name; - hostName->get_CanonicalName(&name); + HString name; + hostName->get_CanonicalName(name.GetAddressOf()); hostName->Release(); UINT32 length; - PCWSTR rawString = WindowsGetStringRawBuffer(name, &length); + PCWSTR rawString = name.GetRawBuffer(&length); return QString::fromWCharArray(rawString, length); } IHostName *firstHost; hostNames->GetAt(0, &firstHost); hostNames->Release(); - HSTRING name; - firstHost->get_CanonicalName(&name); + HString name; + firstHost->get_CanonicalName(name.GetAddressOf()); firstHost->Release(); UINT32 length; - PCWSTR rawString = WindowsGetStringRawBuffer(name, &length); + PCWSTR rawString = name.GetRawBuffer(&length); return QString::fromWCharArray(rawString, length); } diff --git a/src/network/kernel/qnetworkinterface_winrt.cpp b/src/network/kernel/qnetworkinterface_winrt.cpp index 6a814c85d4..48a96928a8 100644 --- a/src/network/kernel/qnetworkinterface_winrt.cpp +++ b/src/network/kernel/qnetworkinterface_winrt.cpp @@ -114,11 +114,11 @@ static QList interfaceListing() || (type == HostNameType_Ipv6 && hostInfo.prefixLength > 128)) continue; - HSTRING name; - hostName->get_CanonicalName(&name); + HString name; + hostName->get_CanonicalName(name.GetAddressOf()); hostName->Release(); UINT32 length; - PCWSTR rawString = WindowsGetStringRawBuffer(name, &length); + PCWSTR rawString = name.GetRawBuffer(&length); hostInfo.address = QString::fromWCharArray(rawString, length); hostList << hostInfo; diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index a32a757191..8eb632ff63 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -124,10 +124,10 @@ struct SocketHandler Q_GLOBAL_STATIC(SocketHandler, gSocketHandler) -QString qt_QStringFromHSTRING(HSTRING string) +static inline QString qt_QStringFromHString(const HString &string) { UINT32 length; - PCWSTR rawString = WindowsGetStringRawBuffer(string, &length); + PCWSTR rawString = string.GetRawBuffer(&length); return QString::fromWCharArray(rawString, length); } @@ -604,13 +604,13 @@ qint64 QNativeSocketEngine::readDatagram(char *data, qint64 maxlen, QHostAddress for (int i = 0; i < d->pendingDatagrams.size(); ++i) { IDatagramSocketMessageReceivedEventArgs *arg = d->pendingDatagrams.at(i); ComPtr remoteHost; - HSTRING remoteHostString; - HSTRING remotePort; + HString remoteHostString; + HString remotePort; arg->get_RemoteAddress(&remoteHost); - arg->get_RemotePort(&remotePort); - remoteHost->get_CanonicalName(&remoteHostString); - returnAddress.setAddress(qt_QStringFromHSTRING(remoteHostString)); - returnPort = qt_QStringFromHSTRING(remotePort).toInt(); + arg->get_RemotePort(remotePort.GetAddressOf()); + remoteHost->get_CanonicalName(remoteHostString.GetAddressOf()); + returnAddress.setAddress(qt_QStringFromHString(remoteHostString)); + returnPort = qt_QStringFromHString(remotePort).toInt(); ComPtr reader; arg->GetDataReader(&reader); if (!reader) @@ -1097,7 +1097,7 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() if (socketType == QAbstractSocket::TcpSocket) { ComPtr hostName; - HSTRING tmpHString; + HString tmpHString; ComPtr info; if (FAILED(tcp->get_Information(&info))) { qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket info"); @@ -1105,28 +1105,28 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() } info->get_LocalAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(&tmpHString); - localAddress.setAddress(qt_QStringFromHSTRING(tmpHString)); - info->get_LocalPort(&tmpHString); - localPort = qt_QStringFromHSTRING(tmpHString).toInt(); + hostName->get_CanonicalName(tmpHString.GetAddressOf()); + localAddress.setAddress(qt_QStringFromHString(tmpHString)); + info->get_LocalPort(tmpHString.GetAddressOf()); + localPort = qt_QStringFromHString(tmpHString).toInt(); } if (!localPort && tcpListener) { ComPtr listenerInfo = 0; tcpListener->get_Information(&listenerInfo); - listenerInfo->get_LocalPort(&tmpHString); - localPort = qt_QStringFromHSTRING(tmpHString).toInt(); + listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + localPort = qt_QStringFromHString(tmpHString).toInt(); localAddress == QHostAddress::Any; } info->get_RemoteAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(&tmpHString); - peerAddress.setAddress(qt_QStringFromHSTRING(tmpHString)); - info->get_RemotePort(&tmpHString); - peerPort = qt_QStringFromHSTRING(tmpHString).toInt(); + hostName->get_CanonicalName(tmpHString.GetAddressOf()); + peerAddress.setAddress(qt_QStringFromHString(tmpHString)); + info->get_RemotePort(tmpHString.GetAddressOf()); + peerPort = qt_QStringFromHString(tmpHString).toInt(); } } else if (socketType == QAbstractSocket::UdpSocket) { ComPtr hostName; - HSTRING tmpHString; + HString tmpHString; ComPtr info; if (FAILED(udp->get_Information(&info))) { qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket information"); @@ -1134,18 +1134,18 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() } info->get_LocalAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(&tmpHString); - localAddress.setAddress(qt_QStringFromHSTRING(tmpHString)); - info->get_LocalPort(&tmpHString); - localPort = qt_QStringFromHSTRING(tmpHString).toInt(); + hostName->get_CanonicalName(tmpHString.GetAddressOf()); + localAddress.setAddress(qt_QStringFromHString(tmpHString)); + info->get_LocalPort(tmpHString.GetAddressOf()); + localPort = qt_QStringFromHString(tmpHString).toInt(); } info->get_RemoteAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(&tmpHString); - peerAddress.setAddress(qt_QStringFromHSTRING(tmpHString)); - info->get_RemotePort(&tmpHString); - peerPort = qt_QStringFromHSTRING(tmpHString).toInt(); + hostName->get_CanonicalName(tmpHString.GetAddressOf()); + peerAddress.setAddress(qt_QStringFromHString(tmpHString)); + info->get_RemotePort(tmpHString.GetAddressOf()); + peerPort = qt_QStringFromHString(tmpHString).toInt(); } } return true; -- cgit v1.2.3