diff options
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 20c634ad78..9091b5579e 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -4294,6 +4294,12 @@ bool QObject::disconnect(const QMetaObject::Connection &connection) c->next->prev = c->prev; c->receiver = 0; + // destroy the QSlotObject, if possible + if (c->isSlotObject) { + c->slotObj->destroyIfLastRef(); + c->isSlotObject = false; + } + const_cast<QMetaObject::Connection &>(connection).d_ptr = 0; c->deref(); // has been removed from the QMetaObject::Connection object |