summaryrefslogtreecommitdiffstats
path: root/core/object/script_language_extension.h
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2023-08-31 15:19:31 -0500
committerDavid Snopek <dsnopek@gmail.com>2023-08-31 15:19:31 -0500
commit83faf84ec96f9ccf5fd0b55bfb92e46b17171d9c (patch)
treeea394846f311548aee943b2b2b6b0cd5c5b8fec4 /core/object/script_language_extension.h
parent549fcce5f8f7beace3e5c90e9bbe4335d4fd1476 (diff)
downloadredot-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.h4
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__)