From bd85af6aa294e78444e8c0373e121e7ee9c6181b Mon Sep 17 00:00:00 2001 From: sogla Date: Fri, 3 Apr 2026 13:39:52 +0200 Subject: [PATCH] fix: Welcome text fmt crash The crash occurs because fmt::arg() is receiving temporary string values that are destroyed before the fmt::format() call completes. When player->GetGuildName() and player->GetPlayerName() return temporary strings, the fmt::arg() creates references to them, but they go out of scope immediately. --- src/mod_starterguild.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mod_starterguild.cpp b/src/mod_starterguild.cpp index 10f8895..5041b5d 100644 --- a/src/mod_starterguild.cpp +++ b/src/mod_starterguild.cpp @@ -44,11 +44,13 @@ void StarterGuild::addPlayerToGuild(Player* player) // Inform the player they have joined the guild std::string welcome_text = player->GetTeamId() == TEAM_ALLIANCE ? GUILD_WELCOME_TEXT_ALLIANCE : GUILD_WELCOME_TEXT_HORDE; + std::string guild_name = player->GetGuildName(); + std::string player_name = player->GetPlayerName(); welcome_text = fmt::format( fmt::runtime(welcome_text), - fmt::arg("GUILD", player->GetGuildName()), - fmt::arg("PLAYER", player->GetPlayerName()) + fmt::arg("GUILD", guild_name), + fmt::arg("PLAYER", player_name) ); ChatHandler(player->GetSession()).SendSysMessage(welcome_text);