瀏覽代碼

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.
JDCodeIt 6 年之前
父節點
當前提交
5862d9e482
共有 1 個文件被更改,包括 2 次插入6 次删除
  1. 2 6
      src/wieldmesh.cpp

+ 2 - 6
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