diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/thread/qpromise.h | 10 |
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(); } |