Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2025-04-08 21:12:21 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2025-04-17 09:53:19 +0200
commita4790d33c4251b7f628ec7478767582f0b06a8c5 (patch)
treec73489afb62fc6b8bfe50dd7102259582f4704d5 /sources/pyside6/libpyside/dynamicslot.cpp
parentb78ce722ba1f9faa76ddfc71164bef6e25fec560 (diff)
PySide/Signal manager: Fix corruption when connecting to temporary object
Guard the deletion tracker listening on QObject::destroyed() using GIL. Amends 33bd61d13d8d9e3794b6049891be62f3351313d9. Fixes: PYSIDE-3072 Task-number: PYSIDE-2810 Task-number: PYSIDE-2221 Pick-to: 6.9 6.8 Change-Id: Ia085fa551903dd39c7a9624f6995d8720e9f7fb0 Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/dynamicslot.cpp')
-rw-r--r--sources/pyside6/libpyside/dynamicslot.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/dynamicslot.cpp b/sources/pyside6/libpyside/dynamicslot.cpp
index 3d3098c22..97af4e20f 100644
--- a/sources/pyside6/libpyside/dynamicslot.cpp
+++ b/sources/pyside6/libpyside/dynamicslot.cpp
@@ -349,6 +349,7 @@ public Q_SLOTS:
void SenderSignalDeletionTracker::senderDestroyed(QObject *o)
{
+ Shiboken::GilState gil; // PYSIDE-3072
for (auto it = connectionHash.begin(); it != connectionHash.end(); ) {
if (it.key().sender == o)
it = connectionHash.erase(it);