* Crash Fix for ticket system on closing a ticket (pointer was deleted out of object holder), thanks Visagalis

--HG--
branch : trunk
This commit is contained in:
Machiavelli
2009-01-01 02:49:38 +01:00
parent d968a0457b
commit 87a9ba3f4e
2 changed files with 14 additions and 11 deletions

View File

@@ -560,8 +560,8 @@ bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args)
std::string gmname = m_session->GetPlayer()->GetName();
sWorld.SendGMText(LANG_COMMAND_TICKETDELETED, ticket->guid, gmname.c_str());
ticketmgr.DeleteGMTicketPermanently(ticket->guid);
Player *plr = objmgr.GetPlayer(ticket->playerGuid);
ticketmgr.DeleteGMTicketPermanently(ticket->guid);
if(plr && plr->IsInWorld())
{
// Force abandon ticket

View File

@@ -128,16 +128,20 @@ void WorldSession::HandleGMTicketDeleteOpcode( WorldPacket & /*recv_data*/)
GM_Ticket* ticket = ticketmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID());
// Remove Tickets from Player
ticketmgr.RemoveGMTicketByPlayer(GetPlayer()->GetGUID());
// CHeck for Ticket
if(ticket)
{
// Remove Tickets from Player
// Response - no errors
WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
data << uint32(9);
// Send Packet
SendPacket(&data);
// Response - no errors
WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
data << uint32(9);
// Send Packet
SendPacket(&data);
sWorld.SendGMText(LANG_COMMAND_TICKETPLAYERABANDON, GetPlayer()->GetName(), ticket->guid );
sWorld.SendGMText(LANG_COMMAND_TICKETPLAYERABANDON, GetPlayer()->GetName(), ticket->guid );
ticketmgr.RemoveGMTicketByPlayer(GetPlayer()->GetGUID());
}
}
void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/)
@@ -164,7 +168,6 @@ void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/)
SendPacket(&data);
}
void WorldSession::HandleGMTicketSystemStatusOpcode( WorldPacket & /*recv_data*/)