From 6711fcd6360a4a0a5efba95d51b1fd1cb456471c Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Fri, 10 Aug 2012 19:01:36 +0000 Subject: Fixed a crash in creative inventory (FS 235, patch submitted by l0udPL) git-svn-id: http://mc-server.googlecode.com/svn/trunk@722 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cCreativeInventory.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'source/cCreativeInventory.cpp') diff --git a/source/cCreativeInventory.cpp b/source/cCreativeInventory.cpp index 7083adeb7..77b9107b7 100644 --- a/source/cCreativeInventory.cpp +++ b/source/cCreativeInventory.cpp @@ -28,8 +28,20 @@ void cCreativeInventory::Clicked( cPacket* a_ClickPacket ) { cPacket_CreativeInventoryAction* Packet = reinterpret_cast(a_ClickPacket); short Slot = Packet->m_Slot; + if (Slot == -1) + { + // object thrown out + m_Owner->TossItem(false, Packet->m_Quantity, Packet->m_ItemID, Packet->m_Damage); + return; + } + + if ((Slot < c_HotOffset) || (Slot >= c_NumSlots)) + { + LOG("%s: Invalid slot (%d) in CreativeInventoryAction packet. Ignoring...", m_Owner->GetName().c_str(), Slot); + return; + } - cItem* SlotItem = &(this->m_Slots[Slot]); + cItem * SlotItem = &(this->m_Slots[Slot]); SlotItem->m_ItemID = (ENUM_ITEM_ID) Packet->m_ItemID; SlotItem->m_ItemHealth = Packet->m_Damage; -- cgit v1.2.3