diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index b4342e4b..a1240acf 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -5090,11 +5090,32 @@ const std::string& GameHandler::getTradePeerName() const { return tradePeerName_; } const std::array& GameHandler::getMyTradeSlots() const { - if (inventoryHandler_) return reinterpret_cast&>(inventoryHandler_->getMyTradeSlots()); + if (inventoryHandler_) { + // Convert InventoryHandler::TradeSlot → GameHandler::TradeSlot (different struct layouts) + static std::array converted{}; + const auto& src = inventoryHandler_->getMyTradeSlots(); + for (size_t i = 0; i < TRADE_SLOT_COUNT; i++) { + converted[i].itemId = src[i].itemId; + converted[i].displayId = src[i].displayId; + converted[i].stackCount = src[i].stackCount; + converted[i].itemGuid = src[i].itemGuid; + } + return converted; + } return myTradeSlots_; } const std::array& GameHandler::getPeerTradeSlots() const { - if (inventoryHandler_) return reinterpret_cast&>(inventoryHandler_->getPeerTradeSlots()); + if (inventoryHandler_) { + static std::array converted{}; + const auto& src = inventoryHandler_->getPeerTradeSlots(); + for (size_t i = 0; i < TRADE_SLOT_COUNT; i++) { + converted[i].itemId = src[i].itemId; + converted[i].displayId = src[i].displayId; + converted[i].stackCount = src[i].stackCount; + converted[i].itemGuid = src[i].itemGuid; + } + return converted; + } return peerTradeSlots_; } uint64_t GameHandler::getMyTradeGold() const {