From 5c4861d312110986b8ba31b88f71174553e71d69 Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Wed, 18 Aug 2021 17:27:04 +0200 Subject: [PATCH] QCborValue: add asserts to encoding method This patch is inspired by CodeChecker, that is complaining about possible nullptr dereferencing. Currently it is a false-positive, because the codepath suggested by CodeChecker is impossible with current implementation. But having asserts can save some time in case of possible refactoring. Task-number: QTBUG-95727 Pick-to: 6.2 Change-Id: I242a23e8aaa249cce16b867c0884dfc3849977f5 Reviewed-by: Thiago Macieira Reviewed-by: Qt CI Bot --- src/corelib/serialization/qcborvalue.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp index d9358a6bf66..e6146c722e6 100644 --- a/src/corelib/serialization/qcborvalue.cpp +++ b/src/corelib/serialization/qcborvalue.cpp @@ -1354,6 +1354,7 @@ static void encodeToCbor(QCborStreamWriter &writer, const QCborContainerPrivate else writer.endMap(); } else if (idx < 0) { + Q_ASSERT_X(d != nullptr, "QCborValue", "Unexpected null container"); if (d->elements.size() != 2) { // invalid state! qWarning("QCborValue: invalid tag state; are you encoding something that was improperly decoded?"); @@ -1364,6 +1365,7 @@ static void encodeToCbor(QCborStreamWriter &writer, const QCborContainerPrivate writer.append(QCborTag(d->elements.at(0).value)); encodeToCbor(writer, d, 1, opt); } else { + Q_ASSERT_X(d != nullptr, "QCborValue", "Unexpected null container"); // just one element auto e = d->elements.at(idx); const ByteData *b = d->byteData(idx);