Merge pull request #72286 from vnen/gdscript-native-static-call-crash

GDScript: Avoid calling non-static methods on native classes
This commit is contained in:
Rémi Verschelde 2023-01-29 02:23:55 +01:00 committed by GitHub
commit 9420116f6c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 1 deletions

View file

@ -98,7 +98,7 @@ Variant GDScriptNativeClass::callp(const StringName &p_method, const Variant **p
return Object::callp(p_method, p_args, p_argcount, r_error);
}
MethodBind *method = ClassDB::get_method(name, p_method);
if (method) {
if (method && method->is_static()) {
// Native static method.
return method->call(nullptr, p_args, p_argcount, r_error);
}

View file

@ -0,0 +1,6 @@
# https://github.com/godotengine/godot/issues/66675
func test():
example(Node2D)
func example(thing):
print(thing.has_method('asdf'))

View file

@ -0,0 +1,6 @@
GDTEST_RUNTIME_ERROR
>> SCRIPT ERROR
>> on function: example()
>> runtime/errors/non_static_method_call_on_native_class.gd
>> 6
>> Invalid call. Nonexistent function 'has_method' in base 'Node2D'.