diff options
| author | Linus Jahn <lnj@kaidan.im> | 2023-03-14 20:42:50 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2023-03-14 22:39:14 +0100 |
| commit | 567b58a7a6dabf105a4d013b07c9937fbd68fd24 (patch) | |
| tree | 62578e009f96f8a7b1859142bab2aab37c641a27 | |
| parent | dfe4b2d2759e5a1af43f5f2a74b6416ce5dab229 (diff) | |
MamManager: Avoid possible use-after-move
| -rw-r--r-- | src/client/QXmppMamManager.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
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::RetrieveResult> 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; |
