From 3e0fc6906e8920e899df7a05ef35b235dbb1f3b9 Mon Sep 17 00:00:00 2001 From: "thomas.herzog" Date: Fri, 22 Mar 2019 12:54:19 +0100 Subject: [PATCH] [GDNative] fix NativeScript leak in editor (cherry picked from commit 5fff7f741a8cc18e6f891ddee6f4130f624ece57) --- .../gdnative/nativescript/nativescript.cpp | 38 +++++++++---------- modules/gdnative/nativescript/nativescript.h | 1 + 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp index 509d78d4f27..5cf144d4fe3 100644 --- a/modules/gdnative/nativescript/nativescript.cpp +++ b/modules/gdnative/nativescript/nativescript.cpp @@ -160,8 +160,10 @@ bool NativeScript::can_instance() const { NativeScriptDesc *script_data = get_script_desc(); #ifdef TOOLS_ENABLED - - return script_data || (!is_tool() && !ScriptServer::is_scripting_enabled()); + // Only valid if this is either a tool script or a "regular" script. + // (so an environment whre scripting is disabled (and not the editor) would not + // create objects). + return script_data && (is_tool() || ScriptServer::is_scripting_enabled()); #else return script_data; #endif @@ -199,25 +201,6 @@ ScriptInstance *NativeScript::instance_create(Object *p_this) { return NULL; } -#ifdef TOOLS_ENABLED - if (!ScriptServer::is_scripting_enabled() && !is_tool()) { - // placeholder for nodes. For tools we want the rool thing. - - PlaceHolderScriptInstance *sins = memnew(PlaceHolderScriptInstance(NSL, Ref