diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2024-03-05 14:32:45 +0100 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2024-03-08 17:44:18 +0100 |
commit | 6e0c438a41a61a3d0a93954f00f46951c4399224 (patch) | |
tree | 42ee0881dedb5fcccaa3aa2231664ca602b16a84 /src/corelib/kernel/qobject.cpp | |
parent | b8f9a8681347476f4db1719b38a67d7f9d3c74be (diff) |
QObject: fix a documentation note in the destructor
The docs for ~QObject say:
> any pending posted events for the object are removed from the event
> queue
but then they also say:
> Deleting a QObject while pending events are waiting to be delivered
> can cause a crash
These two contradict each other. In fact, the first one is correct, the
second one is factually incorrect. Amend it to what I believe it's the
intended meaning: do not destroy a QObject which is _handling_ an event
(i.e. we're into QObject::event() or an override).
Change-Id: Id1d564f296e17a764e0f49ebfedf6e292085c221
Pick-to: 6.7 6.6 6.5 6.2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shantanu Tushar <shantanu.tushar@kdab.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index b00827dfa2..162420532f 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1023,8 +1023,8 @@ void QObjectPrivate::clearBindingStorage() outside the parent. If you still do, the destroyed() signal gives you an opportunity to detect when an object is destroyed. - \warning Deleting a QObject while pending events are waiting to - be delivered can cause a crash. You must not delete the QObject + \warning Deleting a QObject while it is handling an event + delivered to it can cause a crash. You must not delete the QObject directly if it exists in a different thread than the one currently executing. Use deleteLater() instead, which will cause the event loop to delete the object after all pending events have been |