diff options
Diffstat (limited to 'src/corelib/serialization/qcborvalue_p.h')
-rw-r--r-- | src/corelib/serialization/qcborvalue_p.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/corelib/serialization/qcborvalue_p.h b/src/corelib/serialization/qcborvalue_p.h index 861b91eec0..c80abd68f5 100644 --- a/src/corelib/serialization/qcborvalue_p.h +++ b/src/corelib/serialization/qcborvalue_p.h @@ -153,7 +153,8 @@ public: char *ptr = data.begin() + offset; auto b = new (ptr) QtCbor::ByteData; b->len = len; - memcpy(b->byte(), block, len); + if (block) + memcpy(b->byte(), block, len); return offset; } @@ -239,10 +240,14 @@ public: appendByteData(s.latin1(), s.size(), QCborValue::String, QtCbor::Element::StringIsAscii); } + void appendAsciiString(const QString &s); void append(const QString &s) { - appendByteData(reinterpret_cast<const char *>(s.constData()), s.size() * 2, - QCborValue::String, QtCbor::Element::StringIsUtf16); + if (QtPrivate::isAscii(s)) + appendAsciiString(s); + else + appendByteData(reinterpret_cast<const char *>(s.constData()), s.size() * 2, + QCborValue::String, QtCbor::Element::StringIsUtf16); } void append(const QCborValue &v) { |