godot-cpp
godot-cpp copied to clipboard
add_virtual_method with parameter crashes engine when loading editor
Godot version
4.3
godot-cpp version
4.3
System information
Windows 11
Issue description
When I regist a method with a parameter to be virtual for godot. Editor crashed when launching.
I think it is caused by empty arguments_metadata in created MethodInfo.
I tried to add vector size checking code in class_db.cpp. And crash dosen't appear.
Steps to reproduce
- Regist a virtual method by calling:
ClassDB::add_virtual_method("TestClass", MethodInfo(Variant::Type::BOOL, "func_with_parameter", PropertyInfo(Variant::STRING_NAME, "param_name", PROPERTY_HINT_NONE, "StringName", PROPERTY_USAGE_NONE)), {"param_name"}); - Build GDExtension.
- Launch game with VSCode or other IDEs.
Minimal reproduction project
Please try with steps thanks!
Thanks!
It'd probably be good to add a check like you show above, but you shouldn't be directly calling ClassDB::add_virtual_method() anyway.
Instead, use the GDVIRTUAL*() and GDVIRTUAL_BIND() macros. They'll take care of all the necessary setup. You can see an example of them in the test code in test/src/example.h and test/src/example.cpp.