diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-06-02 00:33:51 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-06-03 22:31:01 +0300 |
commit | aba7134301e0fe49cb3a6b157d226e1405753237 (patch) | |
tree | 32b35873b359483a34babe416ea654f9fe9471ac /src/guiInventoryMenu.cpp | |
parent | d7447cdf9e4df3c345218886ab2bae0e0cc4fc55 (diff) | |
download | minetest-aba7134301e0fe49cb3a6b157d226e1405753237.tar.gz minetest-aba7134301e0fe49cb3a6b157d226e1405753237.tar.bz2 minetest-aba7134301e0fe49cb3a6b157d226e1405753237.zip |
on_metadata_inventory_{move,offer,take}
Diffstat (limited to 'src/guiInventoryMenu.cpp')
-rw-r--r-- | src/guiInventoryMenu.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/guiInventoryMenu.cpp b/src/guiInventoryMenu.cpp index 823addd1b..51001eee3 100644 --- a/src/guiInventoryMenu.cpp +++ b/src/guiInventoryMenu.cpp @@ -526,24 +526,35 @@ bool GUIInventoryMenu::OnEvent(const SEvent& event) u32 s_count = 0; if(s.isValid()) - { + do{ // breakable inv_s = m_invmgr->getInventory(s.inventoryloc); - assert(inv_s); + + if(!inv_s){ + errorstream<<"InventoryMenu: The selected inventory location " + <<"\""<<s.inventoryloc.dump()<<"\" doesn't exist" + <<std::endl; + s.i = -1; // make it invalid again + break; + } InventoryList *list = inv_s->getList(s.listname); if(list == NULL){ errorstream<<"InventoryMenu: The selected inventory list \"" <<s.listname<<"\" does not exist"<<std::endl; s.i = -1; // make it invalid again - } else if((u32)s.i >= list->getSize()){ + break; + } + + if((u32)s.i >= list->getSize()){ errorstream<<"InventoryMenu: The selected inventory list \"" <<s.listname<<"\" is too small (i="<<s.i<<", size=" <<list->getSize()<<")"<<std::endl; s.i = -1; // make it invalid again - } else{ - s_count = list->getItem(s.i).count; + break; } - } + + s_count = list->getItem(s.i).count; + }while(0); bool identical = (m_selected_item != NULL) && s.isValid() && (inv_selected == inv_s) && |