forked from Mirrorlandia_minetest/minetest
fix memory leak in itemdef
cleanup useless code
This commit is contained in:
parent
5743ef4e64
commit
7a32698312
@ -226,6 +226,12 @@ class CItemDefManager: public IWritableItemDefManager
|
|||||||
public:
|
public:
|
||||||
CItemDefManager()
|
CItemDefManager()
|
||||||
{
|
{
|
||||||
|
for (std::map<std::string, ItemDefinition*>::iterator iter =
|
||||||
|
m_item_definitions.begin(); iter != m_item_definitions.end();
|
||||||
|
iter ++) {
|
||||||
|
delete iter->second;
|
||||||
|
}
|
||||||
|
m_item_definitions.clear();
|
||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
m_main_thread = get_current_thread_id();
|
m_main_thread = get_current_thread_id();
|
||||||
#endif
|
#endif
|
||||||
@ -241,6 +247,7 @@ public:
|
|||||||
{
|
{
|
||||||
ClientCached *cc = *i;
|
ClientCached *cc = *i;
|
||||||
cc->wield_mesh->drop();
|
cc->wield_mesh->drop();
|
||||||
|
delete cc;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -328,11 +335,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create a wield mesh
|
// Create a wield mesh
|
||||||
if(cc->wield_mesh != NULL)
|
assert(cc->wield_mesh == NULL);
|
||||||
{
|
|
||||||
cc->wield_mesh->drop();
|
|
||||||
cc->wield_mesh = NULL;
|
|
||||||
}
|
|
||||||
if(def->type == ITEM_NODE && def->wield_image == "")
|
if(def->type == ITEM_NODE && def->wield_image == "")
|
||||||
{
|
{
|
||||||
need_node_mesh = true;
|
need_node_mesh = true;
|
||||||
@ -436,16 +439,16 @@ public:
|
|||||||
/*
|
/*
|
||||||
Use the node mesh as the wield mesh
|
Use the node mesh as the wield mesh
|
||||||
*/
|
*/
|
||||||
if(cc->wield_mesh == NULL)
|
|
||||||
{
|
|
||||||
// Scale to proper wield mesh proportions
|
// Scale to proper wield mesh proportions
|
||||||
scaleMesh(node_mesh, v3f(30.0, 30.0, 30.0)
|
scaleMesh(node_mesh, v3f(30.0, 30.0, 30.0)
|
||||||
* def->wield_scale);
|
* def->wield_scale);
|
||||||
|
|
||||||
cc->wield_mesh = node_mesh;
|
cc->wield_mesh = node_mesh;
|
||||||
cc->wield_mesh->grab();
|
cc->wield_mesh->grab();
|
||||||
}
|
|
||||||
|
|
||||||
// falling outside of here deletes node_mesh
|
//no way reference count can be smaller than 2 in this place!
|
||||||
|
assert(cc->wield_mesh->getReferenceCount() >= 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put in cache
|
// Put in cache
|
||||||
|
Loading…
Reference in New Issue
Block a user