diff --git a/src/network/access/qrestaccessmanager.cpp b/src/network/access/qrestaccessmanager.cpp index 9e0182c7cb0..e56aee1e5d1 100644 --- a/src/network/access/qrestaccessmanager.cpp +++ b/src/network/access/qrestaccessmanager.cpp @@ -755,11 +755,11 @@ QNetworkReply *QRestAccessManager::customWithDataImpl(const QNetworkRequest &req QNetworkReply *QRestAccessManagerPrivate::createActiveRequest(QNetworkReply *reply, const QObject *contextObject, - QtPrivate::QSlotObjectBase *slot) + QtPrivate::SlotObjUniquePtr slot) { Q_Q(QRestAccessManager); Q_ASSERT(reply); - QtPrivate::SlotObjSharedPtr slotPtr(QtPrivate::SlotObjUniquePtr{slot}); // adopts + QtPrivate::SlotObjSharedPtr slotPtr(std::move(slot)); // adopts activeRequests.insert(reply, CallerInfo{contextObject, slotPtr}); // The signal connections below are made to 'q' to avoid stray signal // handling upon its destruction while requests were still in progress diff --git a/src/network/access/qrestaccessmanager_p.h b/src/network/access/qrestaccessmanager_p.h index 2e6c1afb907..dbe360f2ccd 100644 --- a/src/network/access/qrestaccessmanager_p.h +++ b/src/network/access/qrestaccessmanager_p.h @@ -36,18 +36,19 @@ public: ~QRestAccessManagerPrivate() override; QNetworkReply* createActiveRequest(QNetworkReply *reply, const QObject *contextObject, - QtPrivate::QSlotObjectBase *slot); + QtPrivate::SlotObjUniquePtr slot); void handleReplyFinished(QNetworkReply *reply); using ReqOpRef = qxp::function_ref; QNetworkReply *executeRequest(ReqOpRef requestOperation, - const QObject *context, QtPrivate::QSlotObjectBase *slot) + const QObject *context, QtPrivate::QSlotObjectBase *rawSlot) { + QtPrivate::SlotObjUniquePtr slot(rawSlot); if (!qnam) return warnNoAccessManager(); verifyThreadAffinity(context); QNetworkReply *reply = requestOperation(qnam); - return createActiveRequest(reply, context, slot); + return createActiveRequest(reply, context, std::move(slot)); } using ReqOpRefJson = qxp::function_ref; QNetworkReply *executeRequest(ReqOpRefJson requestOperation, const QJsonDocument &jsonDoc, const QNetworkRequest &request, - const QObject *context, QtPrivate::QSlotObjectBase *slot) + const QObject *context, QtPrivate::QSlotObjectBase *rawSlot) { + QtPrivate::SlotObjUniquePtr slot(rawSlot); if (!qnam) return warnNoAccessManager(); verifyThreadAffinity(context); @@ -68,7 +70,7 @@ public: } req.setHeaders(std::move(h)); QNetworkReply *reply = requestOperation(qnam, req, jsonDoc.toJson(QJsonDocument::Compact)); - return createActiveRequest(reply, context, slot); + return createActiveRequest(reply, context, std::move(slot)); } void verifyThreadAffinity(const QObject *contextObject);