diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2019-11-18 13:26:13 +0100 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2019-11-23 02:14:39 +0100 |
commit | 8027fb60dd1c1e4349eb1ac782d1197e784d6081 (patch) | |
tree | 0c23588a87d2e4673d7164bfce152bf2f5624465 /src/corelib/serialization/qcborvalue.cpp | |
parent | 935681eaca1229f100e54f7447be0e23ceba684b (diff) |
Fix QCborValue::toCbor with non-ASCII URLs
Found while fixing QTBUG-79196.
Change-Id: Ia2aa807ffa8a4c798425fffd15d841657def99af
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/corelib/serialization/qcborvalue.cpp')
-rw-r--r-- | src/corelib/serialization/qcborvalue.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp index 9053618014..0e3d317518 100644 --- a/src/corelib/serialization/qcborvalue.cpp +++ b/src/corelib/serialization/qcborvalue.cpp @@ -1391,10 +1391,10 @@ static QCborValue taggedValueFromCbor(QCborStreamReader &reader) auto &e = d->elements[1]; const ByteData *b = d->byteData(e); - auto replaceByteData = [&](const char *buf, qsizetype len) { + auto replaceByteData = [&](const char *buf, qsizetype len, Element::ValueFlags f) { d->data.clear(); d->usedData = 0; - e.flags = Element::HasByteData | Element::StringIsAscii; + e.flags = Element::HasByteData | f; e.value = d->addByteData(buf, len); }; @@ -1414,7 +1414,7 @@ static QCborValue taggedValueFromCbor(QCborStreamReader &reader) } if (dt.isValid()) { QByteArray text = dt.toString(Qt::ISODateWithMs).toLatin1(); - replaceByteData(text, text.size()); + replaceByteData(text, text.size(), Element::StringIsAscii); e.type = QCborValue::String; d->elements[0].value = qint64(QCborKnownTags::DateTimeString); type = QCborValue::DateTime; @@ -1430,7 +1430,7 @@ static QCborValue taggedValueFromCbor(QCborStreamReader &reader) b->asQStringRaw() : b->toUtf8String()); QByteArray encoded = url.toString(QUrl::DecodeReserved).toUtf8(); - replaceByteData(encoded, encoded.size()); + replaceByteData(encoded, encoded.size(), {}); } type = QCborValue::Url; } @@ -1449,7 +1449,7 @@ static QCborValue taggedValueFromCbor(QCborStreamReader &reader) char buf[sizeof(QUuid)] = {}; if (b) memcpy(buf, b->byte(), qMin(sizeof(buf), size_t(b->len))); - replaceByteData(buf, sizeof(buf)); + replaceByteData(buf, sizeof(buf), {}); type = QCborValue::Uuid; } |