From ae810491e7f7e7e5925ad94f40d7fc711568338a Mon Sep 17 00:00:00 2001 From: IntelligentQuantum Date: Thu, 19 Dec 2019 10:18:26 +0330 Subject: fix(Core/ItemHandler): crash buy back item (#2511) --- src/server/game/Handlers/ItemHandler.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/server/game/Handlers/ItemHandler.cpp') diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index f1c806c299..7c22a85407 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -784,19 +784,20 @@ void WorldSession::HandleBuybackItem(WorldPacket & recvData) InventoryResult msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, pItem, false); if (msg == EQUIP_ERR_OK) { - _player->ModifyMoney(-(int32)price); - _player->RemoveItemFromBuyBackSlot(slot, false); - _player->ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount()); - _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM, pItem->GetEntry(), pItem->GetCount()); - _player->StoreItem(dest, pItem, true); - if (sWorld->getBoolConfig(CONFIG_ITEMDELETE_VENDOR)) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RECOVERY_ITEM); stmt->setUInt32(0, _player->GetGUID()); stmt->setUInt32(1, pItem->GetEntry()); + stmt->setUInt32(2, pItem->GetCount()); CharacterDatabase.Execute(stmt); } + + _player->ModifyMoney(-(int32)price); + _player->RemoveItemFromBuyBackSlot(slot, false); + _player->ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount()); + _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM, pItem->GetEntry(), pItem->GetCount()); + _player->StoreItem(dest, pItem, true); } else _player->SendEquipError(msg, pItem, NULL); -- cgit v1.2.3