From 152f3fc3e3f94a92f3648379ff037d4eabd479bb Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 17 Sep 2018 20:35:35 +0200 Subject: Core/Chat: Fix tradeskill hyperlinks - embedded GUID is now properly read as base 16 (not 10). Closes #22446. --- src/server/game/Chat/HyperlinkTags.cpp | 8 ++------ src/server/game/Chat/Hyperlinks.h | 7 +++++++ 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index 4fa14dc7b1b..a13a3348dd4 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -135,13 +135,9 @@ bool Trinity::Hyperlinks::LinkTags::trade::StoreTo(TradeskillLinkData& val, char { HyperlinkDataTokenizer t(pos, len); uint32 spellId; - uint64 guid; if (!t.TryConsumeTo(spellId)) return false; val.Spell = sSpellMgr->GetSpellInfo(spellId); - if (!(val.Spell && val.Spell->Effects[0].Effect == SPELL_EFFECT_TRADE_SKILL && t.TryConsumeTo(val.CurValue) && - t.TryConsumeTo(val.MaxValue) && t.TryConsumeTo(guid) && t.TryConsumeTo(val.KnownRecipes) && t.IsEmpty())) - return false; - val.Owner.Set(guid); - return true; + return (val.Spell && val.Spell->Effects[0].Effect == SPELL_EFFECT_TRADE_SKILL && t.TryConsumeTo(val.CurValue) && + t.TryConsumeTo(val.MaxValue) && t.TryConsumeTo(val.Owner) && t.TryConsumeTo(val.KnownRecipes) && t.IsEmpty()); } diff --git a/src/server/game/Chat/Hyperlinks.h b/src/server/game/Chat/Hyperlinks.h index 6b5aa4b0d86..5808cbe9447 100644 --- a/src/server/game/Chat/Hyperlinks.h +++ b/src/server/game/Chat/Hyperlinks.h @@ -121,6 +121,13 @@ namespace LinkTags { catch (...) { return false; } return true; } + + static bool StoreTo(ObjectGuid& val, char const* pos, size_t len) + { + try { val.Set(std::stoul(std::string(pos, len), nullptr, 16)); } + catch (...) { return false; } + return true; + } }; #define make_base_tag(ltag, type) struct ltag : public base_tag { using value_type = type; static constexpr char const* tag() { return #ltag; } } -- cgit v1.2.3