QBuffer: optimize setData(ptr, n)
The old code always created a new QByteArray, always allocating memory. The new call assigns the data to the existing QByteArray, enabling potential re-use of the internal QByteArray's buffer. Since QByteArray is missing the STL-style assign() function, abuse replace() for this task. Change-Id: I357f11bad0a976d4d0fb2faeb93f8b2262fa5a65 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
This commit is contained in:
parent
817e47fbcd
commit
52c5f28695
@ -267,8 +267,6 @@ void QBuffer::setData(const QByteArray &data)
|
||||
}
|
||||
|
||||
/*!
|
||||
\fn void QBuffer::setData(const char *data, qsizetype size)
|
||||
|
||||
\overload
|
||||
|
||||
Sets the contents of the internal buffer to be the first \a size
|
||||
@ -277,6 +275,16 @@ void QBuffer::setData(const QByteArray &data)
|
||||
\note In Qt versions prior to 6.5, this function took the length as
|
||||
an \c{int} parameter, potentially truncating sizes.
|
||||
*/
|
||||
void QBuffer::setData(const char *data, qsizetype size)
|
||||
{
|
||||
Q_D(QBuffer);
|
||||
if (isOpen()) {
|
||||
qWarning("QBuffer::setData: Buffer is open");
|
||||
return;
|
||||
}
|
||||
d->buf->replace(qsizetype(0), d->buf->size(), // ### QByteArray lacks assign(ptr, n)
|
||||
data, size);
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
|
@ -36,8 +36,7 @@ public:
|
||||
#if QT_CORE_REMOVED_SINCE(6, 5) && QT_POINTER_SIZE != 4
|
||||
void setData(const char *data, int len) { setData(data, qsizetype(len)); }
|
||||
#endif
|
||||
void setData(const char *data, qsizetype len)
|
||||
{ setData(QByteArray(data, len)); }
|
||||
void setData(const char *data, qsizetype len);
|
||||
const QByteArray &data() const;
|
||||
|
||||
bool open(OpenMode openMode) override;
|
||||
|
Loading…
Reference in New Issue
Block a user