diff options
author | David Snopek <dsnopek@gmail.com> | 2023-08-31 15:19:31 -0500 |
---|---|---|
committer | David Snopek <dsnopek@gmail.com> | 2023-08-31 15:19:31 -0500 |
commit | 83faf84ec96f9ccf5fd0b55bfb92e46b17171d9c (patch) | |
tree | ea394846f311548aee943b2b2b6b0cd5c5b8fec4 /core/object/script_language_extension.h | |
parent | 549fcce5f8f7beace3e5c90e9bbe4335d4fd1476 (diff) | |
download | redot-engine-83faf84ec96f9ccf5fd0b55bfb92e46b17171d9c.tar.gz |
GDExtension: Allocate `GDExtensionScriptInstanceInfo2` for compatibility on the heap to prevent crash
Diffstat (limited to 'core/object/script_language_extension.h')
-rw-r--r-- | core/object/script_language_extension.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/core/object/script_language_extension.h b/core/object/script_language_extension.h index eca208a2bd..bf5ad3c107 100644 --- a/core/object/script_language_extension.h +++ b/core/object/script_language_extension.h @@ -631,6 +631,7 @@ VARIANT_ENUM_CAST(ScriptLanguageExtension::CodeCompletionLocation) class ScriptInstanceExtension : public ScriptInstance { public: const GDExtensionScriptInstanceInfo2 *native_info; + bool free_native_info = false; struct { GDExtensionClassNotification notification_func; } deprecated_native_info; @@ -831,6 +832,9 @@ public: if (native_info->free_func) { native_info->free_func(instance); } + if (free_native_info) { + memfree(const_cast<GDExtensionScriptInstanceInfo2 *>(native_info)); + } } #if defined(__GNUC__) && !defined(__clang__) |