From 567b58a7a6dabf105a4d013b07c9937fbd68fd24 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Tue, 14 Mar 2023 20:42:50 +0100 Subject: MamManager: Avoid possible use-after-move --- src/client/QXmppMamManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/client/QXmppMamManager.cpp') diff --git a/src/client/QXmppMamManager.cpp b/src/client/QXmppMamManager.cpp index a63c997d..a5b1ce5c 100644 --- a/src/client/QXmppMamManager.cpp +++ b/src/client/QXmppMamManager.cpp @@ -240,14 +240,16 @@ QString QXmppMamManager::retrieveArchivedMessages(const QString &to, QXmppTask QXmppMamManager::retrieveMessages(const QString &to, const QString &node, const QString &jid, const QDateTime &start, const QDateTime &end, const QXmppResultSetQuery &resultSetQuery) { auto queryIq = buildRequest(to, node, jid, start, end, resultSetQuery); + auto queryId = queryIq.queryId(); - auto [itr, _] = d->ongoingRequests.insert({ queryIq.queryId().toStdString(), RetrieveRequestState() }); + auto [itr, inserted] = d->ongoingRequests.insert({ queryIq.queryId().toStdString(), RetrieveRequestState() }); + Q_ASSERT(inserted); // create task here; promise could finish immediately after client()->sendIq() auto task = itr->second.promise.task(); // retrieve messages - client()->sendIq(std::move(queryIq)).then(this, [this, queryId = queryIq.queryId()](QXmppClient::IqResult result) { + client()->sendIq(std::move(queryIq)).then(this, [this, queryId](QXmppClient::IqResult result) { auto itr = d->ongoingRequests.find(queryId.toStdString()); if (itr == d->ongoingRequests.end()) { return; -- cgit v1.2.3