Explorar el Código

Merge pull request #1828 from BenLubar/guard-unaligned-access

Only check for Godot 4.0 if the pointer is aligned how it would be for the legacy interface.
David Snopek hace 4 semanas
padre
commit
fd708f429b
Se han modificado 1 ficheros con 1 adiciones y 1 borrados
  1. 1 1
      src/godot.cpp

+ 1 - 1
src/godot.cpp

@@ -289,7 +289,7 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
 
 	// Make sure we weren't passed the legacy struct.
 	uint32_t *raw_interface = (uint32_t *)(void *)p_get_proc_address;
-	if (raw_interface[0] == 4 && raw_interface[1] == 0) {
+	if (uintptr_t(p_get_proc_address) % alignof(LegacyGDExtensionInterface) == 0 && raw_interface[0] == 4 && raw_interface[1] == 0) {
 		// Use the legacy interface only to give a nice error.
 		LegacyGDExtensionInterface *legacy_interface = (LegacyGDExtensionInterface *)p_get_proc_address;
 		internal::gdextension_interface_print_error = (GDExtensionInterfacePrintError)legacy_interface->print_error;