diff options
author | JDCodeIt <JDCodeIt@users.noreply.github.com> | 2018-04-30 11:14:28 -0600 |
---|---|---|
committer | SmallJoker <SmallJoker@users.noreply.github.com> | 2018-04-30 19:14:28 +0200 |
commit | 5862d9e482f9b263df2a01ef6f5c4c5bcbef91bd (patch) | |
tree | 6bcef6562aa4c19046551a224faa0e07dd490722 | |
parent | ba91624d8c354bac49c35a449029b6712022d0cb (diff) | |
download | minetest-5862d9e482f9b263df2a01ef6f5c4c5bcbef91bd.tar.gz minetest-5862d9e482f9b263df2a01ef6f5c4c5bcbef91bd.tar.bz2 minetest-5862d9e482f9b263df2a01ef6f5c4c5bcbef91bd.zip |
Global new() or grab() to be managed in constuctor only (#7235 partial) (#7236)
* g_extrusion_mesh_cache new() and grab() to be managed in constuctor only (#7235 partial)
This global was getting grab()-ed by each call to getItemMesh, incrementing its reference count. What was to be the final drop() in the destructor ended up with > 0 reference count, so memory not freed by Irrlicht.
-rw-r--r-- | src/wieldmesh.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/wieldmesh.cpp b/src/wieldmesh.cpp index 7414701b7..7791a5a92 100644 --- a/src/wieldmesh.cpp +++ b/src/wieldmesh.cpp @@ -501,12 +501,8 @@ void getItemMesh(Client *client, const ItemStack &item, ItemMesh *result) const ContentFeatures &f = ndef->get(def.name); content_t id = ndef->getId(def.name); - if (!g_extrusion_mesh_cache) { - g_extrusion_mesh_cache = new ExtrusionMeshCache(); - } else { - g_extrusion_mesh_cache->grab(); - } - + FATAL_ERROR_IF(!g_extrusion_mesh_cache, "Extrusion mesh cache is not yet initialized"); + scene::SMesh *mesh = nullptr; // Shading is on by default |