summaryrefslogtreecommitdiffstats
path: root/modules/openxr/openxr_api.cpp
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2024-02-22 16:50:39 -0600
committerDavid Snopek <dsnopek@gmail.com>2024-02-22 16:50:39 -0600
commit713ea0629a8c767e117836af4646cf88deca872a (patch)
treeffd5e312f6ac46c08a9f8cf1e9f786adbe012d4b /modules/openxr/openxr_api.cpp
parent16d61427cab3a8e43f0a9a8ee724fc176b6433c6 (diff)
downloadredot-engine-713ea0629a8c767e117836af4646cf88deca872a.tar.gz
Fix crash when using OpenXR extension wrappers from GDExtension
Diffstat (limited to 'modules/openxr/openxr_api.cpp')
-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();
}