summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-12-23 00:55:14 +0100
committerUwe Klotz <uklotz@mixxx.org>2020-12-30 11:46:22 +0100
commitcf427bd3ea12501b416bf7add62f2ccd3bd6d090 (patch)
tree9037e78561f56116008b3d1d0c23f8bc0228b8ed /src/network
parentfb8f78ea8b540baf18aa39f124ed4914fbc41a04 (diff)
WebTask: Account for side-effect between deleteLater() and QPointer
Diffstat (limited to 'src/network')
-rw-r--r--src/network/webtask.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/network/webtask.cpp b/src/network/webtask.cpp
index 52487f3f2d..0db9936cad 100644
--- a/src/network/webtask.cpp
+++ b/src/network/webtask.cpp
@@ -287,7 +287,6 @@ void WebTask::slotNetworkReplyFinished() {
VERIFY_OR_DEBUG_ASSERT(finishedNetworkReply) {
return;
}
- finishedNetworkReply->deleteLater();
if (kLogger.debugEnabled()) {
if (finishedNetworkReply->url() == finishedNetworkReply->request().url()) {
kLogger.debug()
@@ -310,12 +309,20 @@ void WebTask::slotNetworkReplyFinished() {
DEBUG_ASSERT(m_timeoutTimerId == kInvalidTimerId);
kLogger.debug()
<< this
- << "Ignoring obsolete network reply";
+ << "Discarding obsolete network reply";
+ finishedNetworkReply->deleteLater();
return;
}
VERIFY_OR_DEBUG_ASSERT(m_pendingNetworkReply == finishedNetworkReply) {
+ kLogger.debug()
+ << this
+ << "Discarding unexpected network reply";
+ finishedNetworkReply->deleteLater();
return;
}
+ // As a side-effect QObject::deleteLater() might reset
+ // QPointer references like m_pendingNetworkReply!
+ finishedNetworkReply->deleteLater();
m_pendingNetworkReply = nullptr;
VERIFY_OR_DEBUG_ASSERT(m_state == State::Pending) {