summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-23 11:29:54 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-23 11:29:54 +0100
commit60b927b4cf0e3fb34a0b14ce9b6f9157e69dd549 (patch)
tree1c723f20a2996b9cae255e493cbe88f242ab8de0
parent0072a0ba31797a7c680dad858ce272dbc3ab24aa (diff)
parent713ea0629a8c767e117836af4646cf88deca872a (diff)
downloadredot-engine-60b927b4cf0e3fb34a0b14ce9b6f9157e69dd549.tar.gz
Merge pull request #88689 from dsnopek/openxr-extension-wrapper-crash
Fix crash when using OpenXR extension wrappers from GDExtension
-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();
}