Fix server-crash with non-existing items.
This commit is contained in:
parent
24c86df12e
commit
64f6ddf1e2
@ -63,7 +63,7 @@ cItemHandler * cItemHandler::m_ItemHandler[2268];
|
||||
|
||||
cItemHandler * cItemHandler::GetItemHandler(int a_ItemType)
|
||||
{
|
||||
if (a_ItemType < 0)
|
||||
if ((a_ItemType < 0) || (a_ItemType >= ARRAYCOUNT(m_ItemHandler)) || (!IsValidBlock(a_ItemType) && !IsValidItem(a_ItemType)))
|
||||
{
|
||||
// Either nothing (-1), or bad value, both cases should return the air handler
|
||||
if (a_ItemType < -1)
|
||||
|
@ -170,7 +170,13 @@ void cWindow::Clicked(
|
||||
const cItem & a_ClickedItem
|
||||
)
|
||||
{
|
||||
cPluginManager * PlgMgr = cRoot::Get()->GetPluginManager();
|
||||
if (!IsValidItem(a_ClickedItem.m_ItemType) && !IsValidBlock(a_ClickedItem.m_ItemType))
|
||||
{
|
||||
LOGWARNING("%s: Player \"%s\" clicked to a non-existing item; ignoring click.", __FUNCTION__, a_Player.GetName().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
cPluginManager * PlgMgr = cRoot::Get()->GetPluginManager();
|
||||
if (a_WindowID != m_WindowID)
|
||||
{
|
||||
LOGWARNING("%s: Wrong window ID (exp %d, got %d) received from \"%s\"; ignoring click.", __FUNCTION__, m_WindowID, a_WindowID, a_Player.GetName().c_str());
|
||||
|
Loading…
Reference in New Issue
Block a user