From e548805017ed5477b3e85b0a49ffb828ff9ba947 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 13 Jul 2022 14:46:14 -0600 Subject: [PATCH] fix(Core): Fix indexing in UpdatePlayerSetting (#12375) * fix(Core): Fix indexing in UpdatePlayerSetting * Fix integer signing --- src/server/game/Entities/Player/PlayerSettings.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Player/PlayerSettings.cpp b/src/server/game/Entities/Player/PlayerSettings.cpp index 46130b115..f81bfe9a9 100644 --- a/src/server/game/Entities/Player/PlayerSettings.cpp +++ b/src/server/game/Entities/Player/PlayerSettings.cpp @@ -108,12 +108,11 @@ void Player::_SavePlayerSettings(CharacterDatabaseTransaction trans) void Player::UpdatePlayerSetting(std::string source, uint8 index, uint32 value) { auto itr = m_charSettingsMap.find(source); + uint8 size = index + 1; if (itr == m_charSettingsMap.end()) { // Settings not found, initialize a new entry. - uint8 size = index ? index : index + 1; - PlayerSettingVector setting; setting.resize(size); @@ -129,6 +128,10 @@ void Player::UpdatePlayerSetting(std::string source, uint8 index, uint32 value) } else { + if (size > itr->second.size()) + { + itr->second.resize(size); + } itr->second[index].value = value; } }