summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/thread/qpromise.h10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/corelib/thread/qpromise.h b/src/corelib/thread/qpromise.h
index f7abf8babc..0fd7680314 100644
--- a/src/corelib/thread/qpromise.h
+++ b/src/corelib/thread/qpromise.h
@@ -71,15 +71,9 @@ public:
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QPromise)
~QPromise()
{
- const int state = d.loadState();
- // If QFutureInterface has no state, there is nothing to be done
- if (state == static_cast<int>(QFutureInterfaceBase::State::NoState)) {
- d.cleanContinuation();
- return;
- }
- // Otherwise, if computation is not finished at this point, cancel
+ // If computation is not finished at this point, cancel
// potential waits
- if (!(state & QFutureInterfaceBase::State::Finished)) {
+ if (d.d && !(d.loadState() & QFutureInterfaceBase::State::Finished)) {
d.cancelAndFinish(); // cancel and finalize the state
d.cleanContinuation();
}