diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2021-05-12 14:30:39 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2021-05-14 05:49:43 +0000 |
commit | b914b484a9be97f0bee0a5525390ec1b2200c077 (patch) | |
tree | ecde545ae03048839732caa30452379b87e1e0a5 | |
parent | a3fa8926657047e8e19cedab52f9687de3258610 (diff) |
Avoid crashing: don't call objectName() on partially-deleted objects
Strictly maybe QObject::objectName() itself should check for this; but
in Qt 6 at least, crashes were happening here.
Change-Id: I5666ee0291f7757b0b0aff8d789a8626a6197f62
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r-- | src/trace/qmlmessagetrace.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/trace/qmlmessagetrace.cpp b/src/trace/qmlmessagetrace.cpp index 7422b93..a093e76 100644 --- a/src/trace/qmlmessagetrace.cpp +++ b/src/trace/qmlmessagetrace.cpp @@ -320,7 +320,10 @@ void QmlMessageTrace::writeObjectInstance(QFile &f, QObject *o) int qmlSuffixIdx = className.indexOf(QStringLiteral("_QML")); if (qmlSuffixIdx > 0) className = className.left(qmlSuffixIdx); - QString oName = o->objectName(); + QObjectPrivate *opriv = QObjectPrivate::get(o); + QString oName; + if (!opriv->wasDeleted && !opriv->isDeletingChildren) + oName = o->objectName(); if (oName.isEmpty()) oName = QStringLiteral("0x%1").arg(qulonglong(o), 0, 16); f.write(QStringLiteral(" ObjectInstance { id: %1; objectName: \"%2\"; objectClass: \"%3\" }\n") |