mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 18:23:54 +02:00
Merge pull request #7409 from huffman/fix-handle-reply-finished
Fix edge-case where resource can receive a signal after request deleted
This commit is contained in:
commit
f58a00f75a
1 changed files with 10 additions and 2 deletions
|
@ -267,9 +267,10 @@ Resource::Resource(const QUrl& url, bool delayLoad) :
|
|||
|
||||
Resource::~Resource() {
|
||||
if (_request) {
|
||||
ResourceCache::requestCompleted(this);
|
||||
_request->disconnect(this);
|
||||
_request->deleteLater();
|
||||
_request = nullptr;
|
||||
ResourceCache::requestCompleted(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,7 +415,14 @@ void Resource::handleDownloadProgress(uint64_t bytesReceived, uint64_t bytesTota
|
|||
}
|
||||
|
||||
void Resource::handleReplyFinished() {
|
||||
Q_ASSERT(_request);
|
||||
Q_ASSERT_X(_request, "Resource::handleReplyFinished", "Request should not be null while in handleReplyFinished");
|
||||
|
||||
if (!_request || _request != sender()) {
|
||||
// This can happen in the edge case that a request is timed out, but a `finished` signal is emitted before it is deleted.
|
||||
qWarning(networking) << "Received signal Resource::handleReplyFinished from ResourceRequest that is not the current"
|
||||
<< " request: " << sender() << ", " << _request;
|
||||
return;
|
||||
}
|
||||
|
||||
ResourceCache::requestCompleted(this);
|
||||
|
||||
|
|
Loading…
Reference in a new issue