From 0e54ba0486e65af74f8b7729b09e42de5495d8ec Mon Sep 17 00:00:00 2001 From: SkyJJ Date: Mon, 27 Jul 2020 16:58:21 +0200 Subject: [PATCH] Fix EditorTranslationParser leak --- editor/editor_node.cpp | 1 + editor/editor_translation_parser.cpp | 5 +++++ editor/editor_translation_parser.h | 1 + modules/gdscript/register_types.cpp | 8 +------- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 7eb5b3094de..ce131e6a054 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -6799,6 +6799,7 @@ EditorNode::EditorNode() { EditorNode::~EditorNode() { EditorInspector::cleanup_plugins(); + EditorTranslationParser::get_singleton()->clean_parsers(); remove_print_handler(&print_handler); memdelete(EditorHelp::get_doc_data()); diff --git a/editor/editor_translation_parser.cpp b/editor/editor_translation_parser.cpp index 3f4864ad1ea..da191fbc922 100644 --- a/editor/editor_translation_parser.cpp +++ b/editor/editor_translation_parser.cpp @@ -147,6 +147,11 @@ void EditorTranslationParser::remove_parser(const Ref get_parser(const String &p_extension) const; void add_parser(const Ref &p_parser, ParserType p_type); void remove_parser(const Ref &p_parser, ParserType p_type); + void clean_parsers(); EditorTranslationParser(); ~EditorTranslationParser(); diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp index 23c7f97b5a4..5c1d2f6f1bb 100644 --- a/modules/gdscript/register_types.cpp +++ b/modules/gdscript/register_types.cpp @@ -57,8 +57,6 @@ GDScriptCache *gdscript_cache = nullptr; #include "language_server/gdscript_language_server.h" #endif // !GDSCRIPT_NO_LSP -Ref gdscript_translation_parser_plugin; - class EditorExportGDScript : public EditorExportPlugin { GDCLASS(EditorExportGDScript, EditorExportPlugin); @@ -122,6 +120,7 @@ void register_gdscript_types() { #ifdef TOOLS_ENABLED EditorNode::add_init_callback(_editor_init); + Ref gdscript_translation_parser_plugin; gdscript_translation_parser_plugin.instance(); EditorTranslationParser::get_singleton()->add_parser(gdscript_translation_parser_plugin, EditorTranslationParser::STANDARD); #endif // TOOLS_ENABLED @@ -143,9 +142,4 @@ void unregister_gdscript_types() { ResourceSaver::remove_resource_format_saver(resource_saver_gd); resource_saver_gd.unref(); - -#ifdef TOOLS_ENABLED - EditorTranslationParser::get_singleton()->remove_parser(gdscript_translation_parser_plugin, EditorTranslationParser::STANDARD); - gdscript_translation_parser_plugin.unref(); -#endif // TOOLS_ENABLED }