wasm: fix crash when network reply is closed
We do not need to call QNetworkReply::close as that closes the QIODevice that we do not use (or have) Fixes: QTBUG-77210 Change-Id: I812bc324f49ae28b8c622cfa89f9690e012bf216 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 9a5a31268e1fc1c86796dcf7f9ab757c4a599a49) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
a97bfaddc1
commit
f5a7514f42
@ -68,22 +68,37 @@ QByteArray QNetworkReplyWasmImpl::methodName() const
|
|||||||
|
|
||||||
void QNetworkReplyWasmImpl::close()
|
void QNetworkReplyWasmImpl::close()
|
||||||
{
|
{
|
||||||
|
Q_D(QNetworkReplyWasmImpl);
|
||||||
|
|
||||||
|
if (d->state != QNetworkReplyPrivate::Aborted &&
|
||||||
|
d->state != QNetworkReplyPrivate::Finished &&
|
||||||
|
d->state != QNetworkReplyPrivate::Idle) {
|
||||||
|
d->state = QNetworkReplyPrivate::Finished;
|
||||||
|
d->setCanceled();
|
||||||
|
}
|
||||||
|
|
||||||
QNetworkReply::close();
|
QNetworkReply::close();
|
||||||
setFinished(true);
|
|
||||||
emit finished();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QNetworkReplyWasmImpl::abort()
|
void QNetworkReplyWasmImpl::abort()
|
||||||
{
|
{
|
||||||
Q_D(QNetworkReplyWasmImpl);
|
Q_D(QNetworkReplyWasmImpl);
|
||||||
|
|
||||||
if (d->state == QNetworkReplyPrivate::Finished || d->state == QNetworkReplyPrivate::Aborted)
|
if (d->state == QNetworkReplyPrivate::Finished || d->state == QNetworkReplyPrivate::Aborted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->state = QNetworkReplyPrivate::Aborted;
|
d->state = QNetworkReplyPrivate::Aborted;
|
||||||
d->m_fetch->userData = nullptr;
|
d->setCanceled();
|
||||||
|
}
|
||||||
|
|
||||||
d->emitReplyError(QNetworkReply::OperationCanceledError, QStringLiteral("Operation canceled"));
|
void QNetworkReplyWasmImplPrivate::setCanceled()
|
||||||
close();
|
{
|
||||||
|
Q_Q(QNetworkReplyWasmImpl);
|
||||||
|
m_fetch->userData = nullptr;
|
||||||
|
|
||||||
|
emitReplyError(QNetworkReply::OperationCanceledError, QStringLiteral("Operation canceled"));
|
||||||
|
q->setFinished(true);
|
||||||
|
emit q->finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 QNetworkReplyWasmImpl::bytesAvailable() const
|
qint64 QNetworkReplyWasmImpl::bytesAvailable() const
|
||||||
@ -236,6 +251,7 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
|
|||||||
attr.destinationPath = destinationPath.constData();
|
attr.destinationPath = destinationPath.constData();
|
||||||
|
|
||||||
m_fetch = emscripten_fetch(&attr, request.url().toString().toUtf8());
|
m_fetch = emscripten_fetch(&attr, request.url().toString().toUtf8());
|
||||||
|
state = Working;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QNetworkReplyWasmImplPrivate::emitReplyError(QNetworkReply::NetworkError errorCode, const QString &errorString)
|
void QNetworkReplyWasmImplPrivate::emitReplyError(QNetworkReply::NetworkError errorCode, const QString &errorString)
|
||||||
|
@ -112,6 +112,7 @@ public:
|
|||||||
|
|
||||||
emscripten_fetch_t *m_fetch;
|
emscripten_fetch_t *m_fetch;
|
||||||
void setReplyFinished();
|
void setReplyFinished();
|
||||||
|
void setCanceled();
|
||||||
|
|
||||||
Q_DECLARE_PUBLIC(QNetworkReplyWasmImpl)
|
Q_DECLARE_PUBLIC(QNetworkReplyWasmImpl)
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user