Răsfoiți Sursa

Fix crash when using OpenXR extension wrappers from GDExtension

David Snopek 1 an în urmă
părinte
comite
713ea0629a
1 a modificat fișierele cu 7 adăugiri și 1 ștergeri
  1. 7 1
      modules/openxr/openxr_api.cpp

+ 7 - 1
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();
 }