summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/openxr/openxr_api.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp
index ccf97662e2..e978c012b5 100644
--- a/modules/openxr/openxr_api.cpp
+++ b/modules/openxr/openxr_api.cpp
@@ -1532,7 +1532,13 @@ void OpenXRAPI::register_extension_metadata() {
void OpenXRAPI::cleanup_extension_wrappers() {
for (OpenXRExtensionWrapper *extension_wrapper : registered_extension_wrappers) {
- memdelete(extension_wrapper);
+ // Fix crash when the extension wrapper comes from GDExtension.
+ OpenXRExtensionWrapperExtension *gdextension_extension_wrapper = dynamic_cast<OpenXRExtensionWrapperExtension *>(extension_wrapper);
+ if (gdextension_extension_wrapper) {
+ memdelete(gdextension_extension_wrapper);
+ } else {
+ memdelete(extension_wrapper);
+ }
}
registered_extension_wrappers.clear();
}