summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread
diff options
context:
space:
mode:
authorSona Kurazyan <sona.kurazyan@qt.io>2022-06-20 15:46:00 +0200
committerSona Kurazyan <sona.kurazyan@qt.io>2022-06-22 03:09:24 +0200
commitbf3fc5c95cb4e6acedf242c00b7a1c3b455062bb (patch)
tree38569e7fe02aac8f03c8b2f04732c82b842b248a /src/corelib/thread
parent5d041a15bf89421aa90d421ef7088fbcbbb8283e (diff)
QPromise: run continuation(s) on destruction
If the QFuture is canceled because the associated QPromise has been destroyed, we still need to run its continuations (i.e. onCanceled handler, if it's attached), so replaced the cleanContinuation() call inside ~QPromise() with runContinuation(), which will also take care of cleaning the continuation. [ChangeLog][QtCore][Important Behavior Changes] QFuture now runs its continuations when its associated QPromise has been destroyed. Previously, if a QFuture was canceled because the associated QPromise has been destroyed, its continuations were skipped. Fixes: QTBUG-103992 Pick-to: 6.4 6.3 6.2 Change-Id: Ie05bc760c96c349aade8adb8d2fe5263aff8efac Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/corelib/thread')
-rw-r--r--src/corelib/thread/qpromise.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/thread/qpromise.h b/src/corelib/thread/qpromise.h
index a3ad04648b..d0f6e6ae66 100644
--- a/src/corelib/thread/qpromise.h
+++ b/src/corelib/thread/qpromise.h
@@ -39,7 +39,7 @@ public:
// potential waits
if (d.d && !(d.loadState() & QFutureInterfaceBase::State::Finished)) {
d.cancelAndFinish(); // cancel and finalize the state
- d.cleanContinuation();
+ d.runContinuation();
}
}