diff options
author | Treeston <treeston.mmoc@gmail.com> | 2020-08-28 00:11:16 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-02-04 00:27:14 +0100 |
commit | 9f97fdd31a3b9a06b6acfa1101d105e43687e824 (patch) | |
tree | 027f81c18e7733fa3554cf1dd704a0900d254725 /src/server/game/Handlers/CharacterHandler.cpp | |
parent | 6e45c371c4098942e0085a71577a07b17725ee93 (diff) |
Core/Common: Tokenizer -> Trinity::Tokenize (PR: #25327)
(cherry picked from commit 534a2388b7c662c8796aabb1ec8cb424879799b6)
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 7e44225f8da..09e945981af 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -58,6 +58,7 @@ #include "ReputationMgr.h" #include "ScriptMgr.h" #include "SocialMgr.h" +#include "StringConvert.h" #include "SystemPackets.h" #include "Util.h" #include "World.h" @@ -2505,11 +2506,20 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa // Title conversion if (!knownTitlesStr.empty()) { + std::vector<std::string_view> tokens = Trinity::Tokenize(knownTitlesStr, ' ', false); std::vector<uint32> knownTitles; - Tokenizer tokens(knownTitlesStr, ' '); - for (uint32 index = 0; index < tokens.size(); ++index) - knownTitles.push_back(atoul(tokens[index])); + for (std::string_view token : tokens) + { + if (Optional<uint32> thisMask = Trinity::StringTo<uint32>(token)) + knownTitles.push_back(*thisMask); + else + { + TC_LOG_WARN("entities.player", "%s has invalid title data '%s' - skipped, this may result in titles being lost", + GetPlayerInfo().c_str(), std::string(token).c_str()); + knownTitles.push_back(0); + } + } for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChangeTitles.begin(); it != sObjectMgr->FactionChangeTitles.end(); ++it) { @@ -2553,8 +2563,8 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa } std::ostringstream ss; - for (uint32 index = 0; index < knownTitles.size(); ++index) - ss << knownTitles[index] << ' '; + for (uint32 mask : knownTitles) + ss << mask << ' '; stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE); stmt->setString(0, ss.str()); |