Browse Source

Merge pull request #39818 from Wavesonics/server-memory-leak

Fix memory leaks in RasterizerStorageDummy::free
Rémi Verschelde 5 years ago
parent
commit
705b1695af
1 changed files with 9 additions and 4 deletions
  1. 9 4
      drivers/dummy/rasterizer_dummy.h

+ 9 - 4
drivers/dummy/rasterizer_dummy.h

@@ -725,20 +725,25 @@ public:
 	}
 	}
 
 
 	bool free(RID p_rid) {
 	bool free(RID p_rid) {
-
 		if (texture_owner.owns(p_rid)) {
 		if (texture_owner.owns(p_rid)) {
 			// delete the texture
 			// delete the texture
 			DummyTexture *texture = texture_owner.get(p_rid);
 			DummyTexture *texture = texture_owner.get(p_rid);
 			texture_owner.free(p_rid);
 			texture_owner.free(p_rid);
 			memdelete(texture);
 			memdelete(texture);
-		}
-
-		if (mesh_owner.owns(p_rid)) {
+		} else if (mesh_owner.owns(p_rid)) {
 			// delete the mesh
 			// delete the mesh
 			DummyMesh *mesh = mesh_owner.getornull(p_rid);
 			DummyMesh *mesh = mesh_owner.getornull(p_rid);
 			mesh_owner.free(p_rid);
 			mesh_owner.free(p_rid);
 			memdelete(mesh);
 			memdelete(mesh);
+		} else if (lightmap_capture_data_owner.owns(p_rid)) {
+			// delete the lightmap
+			LightmapCapture *lightmap_capture = lightmap_capture_data_owner.getornull(p_rid);
+			lightmap_capture_data_owner.free(p_rid);
+			memdelete(lightmap_capture);
+		} else {
+			return false;
 		}
 		}
+
 		return true;
 		return true;
 	}
 	}