aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CharacterHandler.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-08-28 00:11:16 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-04 00:27:14 +0100
commit9f97fdd31a3b9a06b6acfa1101d105e43687e824 (patch)
tree027f81c18e7733fa3554cf1dd704a0900d254725 /src/server/game/Handlers/CharacterHandler.cpp
parent6e45c371c4098942e0085a71577a07b17725ee93 (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.cpp20
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());