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
|
\overload
|
||||||
|
|
||||||
Sets the contents of the internal buffer to be the first \a size
|
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
|
\note In Qt versions prior to 6.5, this function took the length as
|
||||||
an \c{int} parameter, potentially truncating sizes.
|
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
|
\reimp
|
||||||
|
@ -36,8 +36,7 @@ public:
|
|||||||
#if QT_CORE_REMOVED_SINCE(6, 5) && QT_POINTER_SIZE != 4
|
#if QT_CORE_REMOVED_SINCE(6, 5) && QT_POINTER_SIZE != 4
|
||||||
void setData(const char *data, int len) { setData(data, qsizetype(len)); }
|
void setData(const char *data, int len) { setData(data, qsizetype(len)); }
|
||||||
#endif
|
#endif
|
||||||
void setData(const char *data, qsizetype len)
|
void setData(const char *data, qsizetype len);
|
||||||
{ setData(QByteArray(data, len)); }
|
|
||||||
const QByteArray &data() const;
|
const QByteArray &data() const;
|
||||||
|
|
||||||
bool open(OpenMode openMode) override;
|
bool open(OpenMode openMode) override;
|
||||||
|
Loading…
Reference in New Issue
Block a user