aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-11-03 20:51:03 +0100
committerShauren <shauren.trinity@gmail.com>2024-11-03 20:51:03 +0100
commitb83de81a70b580045540ed4db5627aff5edc682c (patch)
tree7d04cd7106b10b597138ec7a0a5e103d978c0b6c /src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
parent780e8884043242aecd6cdf14fa0974ba0b923a2d (diff)
Core/AuctionHouse: Fixed use after free
Closes #30128
Diffstat (limited to 'src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp')
-rw-r--r--src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
index 95e98c53a6f..de91078aa5d 100644
--- a/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
+++ b/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
@@ -415,12 +415,12 @@ void AuctionBotBuyer::BuyEntry(AuctionPosting* auction, AuctionHouseObject* auct
// Copy data before freeing AuctionPosting in auctionHouse->RemoveAuction
// Because auctionHouse->SendAuctionWon can unload items if bidder is offline
// we need to RemoveAuction before sending mails
- AuctionPosting copy = *auction;
- auctionHouse->RemoveAuction(trans, auction);
+ std::map<uint32, AuctionPosting>::node_type removedAuctionNode = auctionHouse->RemoveAuction(trans, auction);
+ auction = &removedAuctionNode.mapped();
// Mails must be under transaction control too to prevent data loss
- auctionHouse->SendAuctionSold(&copy, nullptr, trans);
- auctionHouse->SendAuctionWon(&copy, nullptr, trans);
+ auctionHouse->SendAuctionSold(auction, nullptr, trans);
+ auctionHouse->SendAuctionWon(auction, nullptr, trans);
// Run SQLs
CharacterDatabase.CommitTransaction(trans);