manually manage the private QHostAddress data pointer

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-03-30 06:02:52 +02:00
parent 13130edc98
commit b362932d07
3 changed files with 11 additions and 6 deletions

View file

@ -122,8 +122,11 @@ QHostAddress::QHostAddress(const QByteArray &address)
Constructs a copy of the given \a address.
*/
QHostAddress::QHostAddress(const QHostAddress &address)
: d(new QHostAddressPrivate(*address.d.data()))
: d(new QHostAddressPrivate())
{
d->protocol = address.d->protocol;
d->ipString = address.d->ipString;
d->scopeId = address.d->scopeId;
}
/*!
@ -169,6 +172,7 @@ QHostAddress::QHostAddress(SpecialAddress address)
*/
QHostAddress::~QHostAddress()
{
delete d;
}
/*!
@ -177,7 +181,9 @@ QHostAddress::~QHostAddress()
*/
QHostAddress &QHostAddress::operator=(const QHostAddress &address)
{
*d.data() = *address.d.data();
d->protocol = address.d->protocol;
d->ipString = address.d->ipString;
d->scopeId = address.d->scopeId;
return *this;
}

View file

@ -22,9 +22,7 @@
#ifndef QHOSTADDRESS_H
#define QHOSTADDRESS_H
#include <QtCore/qpair.h>
#include <QtCore/qstring.h>
#include <QtCore/qscopedpointer.h>
#include <QtCore/qbytearray.h>
#include <QtNetwork/qabstractsocket.h>
struct sockaddr;
@ -79,7 +77,7 @@ public:
{ return !operator==(address); }
private:
QScopedPointer<QHostAddressPrivate> d;
QHostAddressPrivate *d;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QHostAddress::FormattingOptions)

View file

@ -24,6 +24,7 @@
#include <QtCore/QCoreApplication>
#include <QtCore/QSocketNotifier>
#include <QtCore/QScopedPointer>
#include <QtCore/QTimer>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>