Merge pull request #99133 from dsnopek/gdextension-reloadable-when-not-createable

GDExtension: Check if class without recreate callback is creatable, before marking whole extension as unreloadable
This commit is contained in:
Thaddeus Crews 2025-06-09 12:31:36 -05:00
commit c10c656ea7
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC

View file

@ -410,8 +410,16 @@ void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr
}
if (self->reloadable && p_extension_funcs->recreate_instance_func == nullptr) {
ERR_PRINT(vformat("Extension marked as reloadable, but attempted to register class '%s' which doesn't support reloading. Perhaps your language binding don't support it? Reloading disabled for this extension.", class_name));
self->reloadable = false;
bool can_create_class = (bool)p_extension_funcs->create_instance_func;
#ifndef DISABLE_DEPRECATED
if (!can_create_class && p_deprecated_funcs) {
can_create_class = (bool)p_deprecated_funcs->create_instance_func;
}
#endif
if (can_create_class) {
ERR_PRINT(vformat("Extension marked as reloadable, but attempted to register class '%s' which doesn't support reloading. Perhaps your language binding don't support it? Reloading disabled for this extension.", class_name));
self->reloadable = false;
}
}
extension->gdextension.library = self;