From d2204d41e29c47245fd267b7ebf1ffaca99a2338 Mon Sep 17 00:00:00 2001 From: EricksOliveira Date: Fri, 28 Mar 2025 12:08:05 -0300 Subject: [PATCH] Fix crash in trade status action (#1123) * Fix crash in trade status action --- src/strategy/actions/TradeStatusAction.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/strategy/actions/TradeStatusAction.cpp b/src/strategy/actions/TradeStatusAction.cpp index ad421367..d46b842d 100644 --- a/src/strategy/actions/TradeStatusAction.cpp +++ b/src/strategy/actions/TradeStatusAction.cpp @@ -49,7 +49,7 @@ bool TradeStatusAction::Execute(Event event) uint32 status; p >> status; - if (status == TRADE_STATUS_TRADE_ACCEPT) + if (status == TRADE_STATUS_TRADE_ACCEPT || (status == TRADE_STATUS_BACK_TO_TRADE && trader->GetTradeData() && trader->GetTradeData()->IsAccepted())) { WorldPacket p; uint32 status = 0; @@ -122,12 +122,13 @@ bool TradeStatusAction::Execute(Event event) void TradeStatusAction::BeginTrade() { + Player* trader = bot->GetTrader(); + if (!trader || GET_PLAYERBOT_AI(bot->GetTrader())) + return; + WorldPacket p; bot->GetSession()->HandleBeginTradeOpcode(p); - if (GET_PLAYERBOT_AI(bot->GetTrader())) - return; - ListItemsVisitor visitor; IterateItems(&visitor); @@ -149,7 +150,7 @@ void TradeStatusAction::BeginTrade() bool TradeStatusAction::CheckTrade() { Player* trader = bot->GetTrader(); - if (!bot->GetTradeData() || !trader->GetTradeData()) + if (!bot->GetTradeData() || !trader || !trader->GetTradeData()) return false; if (!botAI->HasActivePlayerMaster() && GET_PLAYERBOT_AI(bot->GetTrader()))