diff options
Diffstat (limited to 'src/corelib/serialization/qcborvalue_p.h')
-rw-r--r-- | src/corelib/serialization/qcborvalue_p.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/corelib/serialization/qcborvalue_p.h b/src/corelib/serialization/qcborvalue_p.h index c5cc6c6f0b..5930e330dc 100644 --- a/src/corelib/serialization/qcborvalue_p.h +++ b/src/corelib/serialization/qcborvalue_p.h @@ -103,18 +103,19 @@ public: QList<QtCbor::Element> elements; void deref() { if (!ref.deref()) delete this; } - void compact(qsizetype reserved); + void compact(); static QCborContainerPrivate *clone(QCborContainerPrivate *d, qsizetype reserved = -1); static QCborContainerPrivate *detach(QCborContainerPrivate *d, qsizetype reserved); static QCborContainerPrivate *grow(QCborContainerPrivate *d, qsizetype index); - qptrdiff addByteData(const char *block, qsizetype len) + static qptrdiff addByteDataImpl(QByteArray &target, QByteArray::size_type &targetUsed, + const char *block, qsizetype len) { // This function does not do overflow checking, since the len parameter // is expected to be trusted. There's another version of this function // in decodeStringFromCbor(), which checks. - qptrdiff offset = data.size(); + qptrdiff offset = target.size(); // align offset offset += alignof(QtCbor::ByteData) - 1; @@ -122,10 +123,10 @@ public: qptrdiff increment = qptrdiff(sizeof(QtCbor::ByteData)) + len; - usedData += increment; - data.resize(offset + increment); + targetUsed += increment; + target.resize(offset + increment); - char *ptr = data.begin() + offset; + char *ptr = target.begin() + offset; auto b = new (ptr) QtCbor::ByteData; b->len = len; if (block) @@ -134,6 +135,11 @@ public: return offset; } + qptrdiff addByteData(const char *block, qsizetype len) + { + return addByteDataImpl(data, usedData, block, len); + } + const QtCbor::ByteData *byteData(QtCbor::Element e) const { if ((e.flags & QtCbor::Element::HasByteData) == 0) |