diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-11-03 20:51:03 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-11-03 20:51:03 +0100 |
| commit | b83de81a70b580045540ed4db5627aff5edc682c (patch) | |
| tree | 7d04cd7106b10b597138ec7a0a5e103d978c0b6c /src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp | |
| parent | 780e8884043242aecd6cdf14fa0974ba0b923a2d (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.cpp | 8 |
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(©, nullptr, trans); - auctionHouse->SendAuctionWon(©, nullptr, trans); + auctionHouse->SendAuctionSold(auction, nullptr, trans); + auctionHouse->SendAuctionWon(auction, nullptr, trans); // Run SQLs CharacterDatabase.CommitTransaction(trans); |
