summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2021-05-12 14:30:39 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2021-05-14 05:49:43 +0000
commitb914b484a9be97f0bee0a5525390ec1b2200c077 (patch)
treeecde545ae03048839732caa30452379b87e1e0a5
parenta3fa8926657047e8e19cedab52f9687de3258610 (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.cpp5
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")