From d9b5cbdffa80af3fd04ec9d71c98f0845733eac7 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Sat, 15 Feb 2020 13:45:17 +0800 Subject: [PATCH] Fixes memory leaks in GdNavigationServer and RasterizerSceneHighEndRD --- modules/gdnavigation/gd_navigation_server.cpp | 9 ++++++--- .../rasterizer_rd/rasterizer_scene_high_end_rd.cpp | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/modules/gdnavigation/gd_navigation_server.cpp b/modules/gdnavigation/gd_navigation_server.cpp index 2780e2a931f..5bafa5507cd 100644 --- a/modules/gdnavigation/gd_navigation_server.cpp +++ b/modules/gdnavigation/gd_navigation_server.cpp @@ -115,12 +115,15 @@ GdNavigationServer::GdNavigationServer() : NavigationServer(), + commands_mutex(Mutex::create()), + operations_mutex(Mutex::create()), active(true) { - commands_mutex = Mutex::create(); - operations_mutex = Mutex::create(); } -GdNavigationServer::~GdNavigationServer() {} +GdNavigationServer::~GdNavigationServer() { + memdelete(operations_mutex); + memdelete(commands_mutex); +} void GdNavigationServer::add_command(SetCommand *command) const { auto mut_this = const_cast(this); diff --git a/servers/visual/rasterizer_rd/rasterizer_scene_high_end_rd.cpp b/servers/visual/rasterizer_rd/rasterizer_scene_high_end_rd.cpp index e3c3cdf0bf6..d329fa5779d 100644 --- a/servers/visual/rasterizer_rd/rasterizer_scene_high_end_rd.cpp +++ b/servers/visual/rasterizer_rd/rasterizer_scene_high_end_rd.cpp @@ -2697,8 +2697,20 @@ RasterizerSceneHighEndRD::~RasterizerSceneHighEndRD() { RD::get_singleton()->free(view_dependant_uniform_set); } + storage->free(wireframe_material_shader); + storage->free(overdraw_material_shader); + storage->free(default_shader); + + storage->free(wireframe_material); + storage->free(overdraw_material); + storage->free(default_material); + { RD::get_singleton()->free(scene_state.reflection_buffer); + memdelete_arr(scene_state.instances); + memdelete_arr(scene_state.gi_probes); + memdelete_arr(scene_state.directional_lights); + memdelete_arr(scene_state.lights); memdelete_arr(scene_state.reflections); } }