Yeah, I think you are correct - those arguments should be caller-allocates. For example, g_type_module_register_enum certainly uses a stack-allocated GTypeInfo and asks g_enum_complete_type_info to fill it in. Paging @pwithnall.
These functions also seem like something that shouldn’t get directly exposed in bindings like this. It’s part of the dynamic/plugin type machinery and that’s going to need properly integrated manual bindings to be usable nicely and safely.