From 31fa1d998c80443bc39c3b3ac7ecd9807d568f3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Wed, 23 Jun 2021 15:47:05 -0400
Subject: [PATCH] jamiaccount: fix use after move semantic

onChange should not be moved if used

Change-Id: Id76b7b12502179308e5230e5382eb2f73945c43e
---
 src/jamidht/account_manager.cpp         | 2 +-
 src/jamidht/account_manager.h           | 4 ++--
 src/jamidht/archive_account_manager.cpp | 2 +-
 src/jamidht/archive_account_manager.h   | 2 +-
 src/jamidht/jamiaccount.cpp             | 4 ++--
 src/jamidht/server_account_manager.cpp  | 2 +-
 src/jamidht/server_account_manager.h    | 2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp
index d20f0f9f29..431e3a405d 100644
--- a/src/jamidht/account_manager.cpp
+++ b/src/jamidht/account_manager.cpp
@@ -114,7 +114,7 @@ AccountManager::useIdentity(const dht::crypto::Identity& identity,
                             const std::string& receipt,
                             const std::vector<uint8_t>& receiptSignature,
                             const std::string& username,
-                            OnChangeCallback&& onChange)
+                            const OnChangeCallback& onChange)
 {
     if (receipt.empty() or receiptSignature.empty())
         return nullptr;
diff --git a/src/jamidht/account_manager.h b/src/jamidht/account_manager.h
index 43ec7c7e3c..0fb6177b69 100644
--- a/src/jamidht/account_manager.h
+++ b/src/jamidht/account_manager.h
@@ -119,7 +119,7 @@ public:
                                     std::unique_ptr<AccountCredentials> credentials,
                                     AuthSuccessCallback onSuccess,
                                     AuthFailureCallback onFailure,
-                                    OnChangeCallback onChange)
+                                    const OnChangeCallback& onChange)
         = 0;
 
     virtual bool changePassword(const std::string& password_old, const std::string& password_new) = 0;
@@ -136,7 +136,7 @@ public:
                                    const std::string& receipt,
                                    const std::vector<uint8_t>& receiptSignature,
                                    const std::string& username,
-                                   OnChangeCallback&& onChange);
+                                   const OnChangeCallback& onChange);
 
     void setDht(const std::shared_ptr<dht::DhtRunner>& dht) { dht_ = dht; }
 
diff --git a/src/jamidht/archive_account_manager.cpp b/src/jamidht/archive_account_manager.cpp
index 28249e94e4..f122003cc4 100644
--- a/src/jamidht/archive_account_manager.cpp
+++ b/src/jamidht/archive_account_manager.cpp
@@ -40,7 +40,7 @@ ArchiveAccountManager::initAuthentication(PrivateKey key,
                                           std::unique_ptr<AccountCredentials> credentials,
                                           AuthSuccessCallback onSuccess,
                                           AuthFailureCallback onFailure,
-                                          OnChangeCallback onChange)
+                                          const OnChangeCallback& onChange)
 {
     auto ctx = std::make_shared<AuthContext>();
     ctx->key = key;
diff --git a/src/jamidht/archive_account_manager.h b/src/jamidht/archive_account_manager.h
index 266332a7e0..d965ef2025 100644
--- a/src/jamidht/archive_account_manager.h
+++ b/src/jamidht/archive_account_manager.h
@@ -47,7 +47,7 @@ public:
                             std::unique_ptr<AccountCredentials> credentials,
                             AuthSuccessCallback onSuccess,
                             AuthFailureCallback onFailure,
-                            OnChangeCallback onChange) override;
+                            const OnChangeCallback& onChange) override;
 
     void startSync(const OnNewDeviceCb&, const OnDeviceAnnouncedCb& dcb = {}) override;
 
diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index c3c0e28be4..d034fe7abe 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -1231,7 +1231,7 @@ JamiAccount::loadAccount(const std::string& archive_password,
                                                      receipt_,
                                                      receiptSignature_,
                                                      managerUsername_,
-                                                     std::move(callbacks))) {
+                                                     callbacks)) {
             // normal loading path
             id_ = std::move(id);
             username_ = info->accountId;
@@ -1368,7 +1368,7 @@ JamiAccount::loadAccount(const std::string& archive_password,
                         });
                     }
                 },
-                std::move(callbacks));
+                callbacks);
         }
     } catch (const std::exception& e) {
         JAMI_WARN("[Account %s] error loading account: %s", getAccountID().c_str(), e.what());
diff --git a/src/jamidht/server_account_manager.cpp b/src/jamidht/server_account_manager.cpp
index 02d9c2bc4b..1c740bf5e7 100644
--- a/src/jamidht/server_account_manager.cpp
+++ b/src/jamidht/server_account_manager.cpp
@@ -67,7 +67,7 @@ ServerAccountManager::initAuthentication(PrivateKey key,
                                          std::unique_ptr<AccountCredentials> credentials,
                                          AuthSuccessCallback onSuccess,
                                          AuthFailureCallback onFailure,
-                                         OnChangeCallback onChange)
+                                         const OnChangeCallback& onChange)
 {
     auto ctx = std::make_shared<AuthContext>();
     ctx->key = key;
diff --git a/src/jamidht/server_account_manager.h b/src/jamidht/server_account_manager.h
index 8645519f18..8fc6f9fd7d 100644
--- a/src/jamidht/server_account_manager.h
+++ b/src/jamidht/server_account_manager.h
@@ -45,7 +45,7 @@ public:
                             std::unique_ptr<AccountCredentials> credentials,
                             AuthSuccessCallback onSuccess,
                             AuthFailureCallback onFailure,
-                            OnChangeCallback onChange) override;
+                            const OnChangeCallback& onChange) override;
 
     bool changePassword(const std::string& /*password_old*/,
                         const std::string& /*password_new*/) override
-- 
GitLab