summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMikael Hermansson <mikael@hermansson.io>2022-10-10 23:29:04 +0200
committerMikael Hermansson <mikael@hermansson.io>2022-10-11 00:59:35 +0200
commitcddaf50ff814c2633a310eec1f1e716ddd4170b5 (patch)
tree446f3ab6d536c3cfb7317f37f8c3fe76cc1ff1da /src
parent6696bebfa6b57d529172bf6ad679ed1b793fccb3 (diff)
downloadredot-cpp-cddaf50ff814c2633a310eec1f1e716ddd4170b5.tar.gz
Fix use-after-free when deleting objects from extension terminator
Diffstat (limited to 'src')
-rw-r--r--src/godot.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/godot.cpp b/src/godot.cpp
index 7e7f2eb..356e7f1 100644
--- a/src/godot.cpp
+++ b/src/godot.cpp
@@ -79,11 +79,12 @@ void GDExtensionBinding::initialize_level(void *userdata, GDNativeInitialization
void GDExtensionBinding::deinitialize_level(void *userdata, GDNativeInitializationLevel p_level) {
ClassDB::current_level = p_level;
- ClassDB::deinitialize(p_level);
if (terminate_callback) {
terminate_callback(static_cast<ModuleInitializationLevel>(p_level));
}
+
+ ClassDB::deinitialize(p_level);
}
void GDExtensionBinding::InitObject::register_initializer(Callback p_init) const {