From 3308dee942d1982a0aba68fc41368a284afc8e21 Mon Sep 17 00:00:00 2001 From: Alexander Potashev Date: Sat, 26 Sep 2020 00:36:27 +0000 Subject: [PATCH] Fix bug: Some user profile fields won't apply unless they all have unique new values. Fixes the following bug: Some user profile fields won't apply unless they all have unique new values. STEPS TO REPRODUCE 1. Start the Users KCM ("kcmshell5 kcm_users") 2. Select a user 3. Change the full name (the top-most input field) to "foo", change the email address to "foo@example.com", click Apply. 4. Restart the Users KCM and make sure the change applied. 5. Change the full name to "bar@example.com", change the email address to "bar@example.com" as well, click Apply. OBSERVED RESULT: The full name remains "foo", the email address is changed to "bar@example.com". EXPECTED RESULT: Both fields should change to "bar@example.com". Root cause: When the std::map used in UserApplyJob::start() is initialized, the key-value {"bar@example.com", full name setter ptr} is being overwritten by key-value {"bar@example.com", email setter ptr}. BUG: 427348 (cherry picked from commit 5cdff9625bf35239f7337911bd1de047bce2546a) --- kcms/users/src/user.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kcms/users/src/user.cpp b/kcms/users/src/user.cpp index f68f4c355..f69c1b1f1 100644 --- a/kcms/users/src/user.cpp +++ b/kcms/users/src/user.cpp @@ -258,7 +258,7 @@ UserApplyJob::UserApplyJob(QPointer dbusIfa void UserApplyJob::start() { - const std::map (OrgFreedesktopAccountsUserInterface::*)(const QString&)> set = { + const std::multimap (OrgFreedesktopAccountsUserInterface::*)(const QString&)> set = { {m_name, &OrgFreedesktopAccountsUserInterface::SetUserName}, {m_email, &OrgFreedesktopAccountsUserInterface::SetEmail}, {m_realname, &OrgFreedesktopAccountsUserInterface::SetRealName}, -- GitLab