Просмотр исходного кода

Merge pull request #864 from Zylann/fix_passing_null

Fix passing null to functions taking Object parameters
Rémi Verschelde 2 лет назад
Родитель
Сommit
1507253bd5
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      binding_generator.py

+ 3 - 1
binding_generator.py

@@ -1664,7 +1664,9 @@ def get_encoded_arg(arg_name, type_name, type_meta):
         result.append(f"\tPtrToArg<{correct_type(type_name)}>::encode({name}, &{name}_encoded);")
         name = f"&{name}_encoded"
     elif is_engine_class(type_name):
-        name = f"{name}->_owner"
+        # `{name}` is a C++ wrapper, it contains a field which is the object's pointer Godot expects.
+        # We have to check `nullptr` because when the caller sends `nullptr`, the wrapper itself will be null.
+        name = f"({name} != nullptr ? {name}->_owner : nullptr)"
     else:
         name = f"&{name}"