diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2025-08-14 23:14:51 +0200 |
|---|---|---|
| committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2025-08-18 17:18:06 +0000 |
| commit | 6da8efa1b92b4d4c1b988710a1ffd799221b5e5e (patch) | |
| tree | e914e404f42b41a57db211b8b477f0e0237c3650 | |
| parent | eeb73e3a28e445d55a21cfe69d7cae4de4980c5f (diff) | |
Fix crash checking base type for QObject* when checking QGraphicsObject hierarchies
Amends 6f996ff3439e69b3938e617135b266974802d5b1.
Fixes: PYSIDE-3158
Task-number: PYSIDE-3115
Task-number: PYSIDE-3069
Change-Id: I66bbc9d79d850c108411f9dcbe7e3090ad15b0b3
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
(cherry picked from commit 4c28e43bf63919263875225c3857812d9f8b121e)
(cherry picked from commit e9a4bb962b17799e1b176ce69dedd6f65c36d4f8)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| -rw-r--r-- | sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp index 670c3bf7f..c51d22747 100644 --- a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp +++ b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp @@ -52,9 +52,11 @@ QMetaType QVariant_resolveMetaType(PyTypeObject *type) // QGraphicsItem::itemChange() to work. if (qstrcmp(typeName, "QGraphicsObject*") == 0 && size > 1) { auto *firstBaseType = reinterpret_cast<PyTypeObject *>(PyTuple_GetItem(type->tp_bases, 0)); - const char *firstBaseTypeName = Shiboken::ObjectType::getOriginalName(firstBaseType); - if (firstBaseTypeName != nullptr && qstrcmp(firstBaseTypeName, "QObject*") == 0) - ++i; + if (SbkObjectType_Check(firstBaseType)) { + const char *firstBaseTypeName = Shiboken::ObjectType::getOriginalName(firstBaseType); + if (firstBaseTypeName != nullptr && qstrcmp(firstBaseTypeName, "QObject*") == 0) + ++i; + } } for ( ; i < size; ++i) { auto baseType = reinterpret_cast<PyTypeObject *>(PyTuple_GetItem(type->tp_bases, i)); |
