Skip to content

Commit 253e095

Browse files
authored
Merge pull request godotengine#1581 from dsnopek/classdb-add-virtual-method-arg-metadata-size
Fix crash in `ClassDB::add_virtual_method()` if arguments metadata is the wrong size
2 parents 259c757 + 1e169bb commit 253e095

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/core/class_db.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,14 @@ void ClassDB::add_virtual_method(const StringName &p_class, const MethodInfo &p_
353353
if (mi.argument_count > 0) {
354354
mi.arguments = (GDExtensionPropertyInfo *)memalloc(sizeof(GDExtensionPropertyInfo) * mi.argument_count);
355355
mi.arguments_metadata = (GDExtensionClassMethodArgumentMetadata *)memalloc(sizeof(GDExtensionClassMethodArgumentMetadata) * mi.argument_count);
356+
if (mi.argument_count != p_method.arguments_metadata.size()) {
357+
WARN_PRINT("Mismatch argument metadata count for virtual method: " + String(p_class) + "::" + p_method.name);
358+
}
356359
for (uint32_t i = 0; i < mi.argument_count; i++) {
357360
mi.arguments[i] = p_method.arguments[i]._to_gdextension();
358-
mi.arguments_metadata[i] = p_method.arguments_metadata[i];
361+
if (i < p_method.arguments_metadata.size()) {
362+
mi.arguments_metadata[i] = p_method.arguments_metadata[i];
363+
}
359364
}
360365
} else {
361366
mi.arguments = nullptr;

0 commit comments

Comments
 (0)