diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index be32660a6..8eed17989 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -102,8 +102,6 @@ QHostAddress::QHostAddress(const QByteArray &address) } /*! - \fn QHostAddress::QHostAddress(const sockaddr *sockaddr) - Constructs an IPv4 or IPv6 address using the address specified by the native structure \a sockaddr. @@ -259,34 +257,30 @@ bool QHostAddress::setAddress(const QByteArray &address) } /*! - \fn void QHostAddress::setAddress(const sockaddr *sockaddr) - \overload - Sets the IPv4 or IPv6 address specified by the native structure \a sockaddr. Returns true and sets the address if the address was successfully parsed; otherwise returns false. */ -void QHostAddress::setAddress(const struct sockaddr *sockaddr) +bool QHostAddress::setAddress(const struct sockaddr *sockaddr) { if (!sockaddr) { clear(); - return; + return false; } if (sockaddr->sa_family == AF_INET) { QSTACKARRAY(char, ntopbuffer, INET_ADDRSTRLEN + 1); - if (inet_ntop(AF_INET, &((sockaddr_in *)sockaddr)->sin_addr, ntopbuffer, INET_ADDRSTRLEN) != NULL) { + const sockaddr_in* si4 = (const sockaddr_in *)sockaddr; + if (inet_ntop(AF_INET, &si4->sin_addr, ntopbuffer, INET_ADDRSTRLEN) != NULL) { d->protocol = QAbstractSocket::IPv4Protocol; d->ipString = ntopbuffer; d->scopeId.clear(); - } else { - clear(); + return true; } - return; } #ifndef QT_NO_IPV6 if (sockaddr->sa_family == AF_INET6) { QSTACKARRAY(char, ntopbuffer, INET6_ADDRSTRLEN + 1); - const sockaddr_in6* si6 = (sockaddr_in6 *)sockaddr; + const sockaddr_in6* si6 = (const sockaddr_in6 *)sockaddr; if (inet_ntop(AF_INET6, &(si6->sin6_addr), ntopbuffer, INET6_ADDRSTRLEN) != NULL) { d->protocol = QAbstractSocket::IPv6Protocol; d->ipString = ntopbuffer; @@ -302,13 +296,12 @@ void QHostAddress::setAddress(const struct sockaddr *sockaddr) d->scopeId = QByteArray::number(si6->sin6_scope_id); } } - } else { - clear(); + return true; } - return; } #endif clear(); + return false; } /*! diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h index 4696fc114..9e56780a8 100644 --- a/src/network/kernel/qhostaddress.h +++ b/src/network/kernel/qhostaddress.h @@ -61,7 +61,7 @@ public: QHostAddress &operator=(const QHostAddress &other); QHostAddress &operator=(const QByteArray &address); - void setAddress(const sockaddr *sockaddr); + bool setAddress(const sockaddr *sockaddr); bool setAddress(const QByteArray &address); QAbstractSocket::NetworkLayerProtocol protocol() const;