Plug padding holes in QHostAddressPrivate
On ABIs where quint64 is aligned on 8-byte boundaries (such 32-bit Windows and all 64-bit systems), there was a padding hole of 4 bytes between QHostAddressPrivate::a and the anonymous union. If we move the member to after the union, there is no hole anymore. That operation causes the tail padding to grow from 3 to 7 bytes. Since we also don't need full 32 bits for the protocol, we can shrink the structure by 8 bytes on those architectures and by 4 bytes on 32-bit Unix systems. Change-Id: I461e9fc7199748faa187ffff1415d6601a7bd777 Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
parent
7835b260a9
commit
b05741937c
@ -67,7 +67,7 @@ quintptr Q_CORE_EXPORT qtHookData[] = {
|
|||||||
// The required sizes and offsets are tested in tests/auto/other/toolsupport.
|
// The required sizes and offsets are tested in tests/auto/other/toolsupport.
|
||||||
// When this fails and the change was intentional, adjust the test and
|
// When this fails and the change was intentional, adjust the test and
|
||||||
// adjust this value here.
|
// adjust this value here.
|
||||||
4
|
5
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_STATIC_ASSERT(QHooks::LastHookIndex == sizeof(qtHookData) / sizeof(qtHookData[0]));
|
Q_STATIC_ASSERT(QHooks::LastHookIndex == sizeof(qtHookData) / sizeof(qtHookData[0]));
|
||||||
|
@ -115,14 +115,13 @@ public:
|
|||||||
QString ipString;
|
QString ipString;
|
||||||
QString scopeId;
|
QString scopeId;
|
||||||
|
|
||||||
quint32 a; // IPv4 address
|
|
||||||
union {
|
union {
|
||||||
Q_IPV6ADDR a6; // IPv6 address
|
Q_IPV6ADDR a6; // IPv6 address
|
||||||
struct { quint64 c[2]; } a6_64;
|
struct { quint64 c[2]; } a6_64;
|
||||||
struct { quint32 c[4]; } a6_32;
|
struct { quint32 c[4]; } a6_32;
|
||||||
};
|
};
|
||||||
QAbstractSocket::NetworkLayerProtocol protocol;
|
quint32 a; // IPv4 address
|
||||||
|
qint8 protocol;
|
||||||
bool isParsed;
|
bool isParsed;
|
||||||
|
|
||||||
friend class QHostAddress;
|
friend class QHostAddress;
|
||||||
@ -701,7 +700,7 @@ quint32 QHostAddress::toIPv4Address(bool *ok) const
|
|||||||
QAbstractSocket::NetworkLayerProtocol QHostAddress::protocol() const
|
QAbstractSocket::NetworkLayerProtocol QHostAddress::protocol() const
|
||||||
{
|
{
|
||||||
QT_ENSURE_PARSED(this);
|
QT_ENSURE_PARSED(this);
|
||||||
return d->protocol;
|
return QAbstractSocket::NetworkLayerProtocol(d->protocol);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Loading…
x
Reference in New Issue
Block a user