Merge pull request #69971 from neikeq/csharp-vararg-ret-premature-free

C#: Fix premature free of returned Variant in vararg methods
This commit is contained in:
Rémi Verschelde 2022-12-14 23:27:40 +01:00
commit b8e1d6585c
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -2489,9 +2489,12 @@ Error BindingsGenerator::_generate_cs_native_calls(const InternalCall &p_icall,
if (!ret_void) {
if (return_type->cname != name_cache.type_Variant) {
// Usually the return value takes ownership, but in this case the variant is only used
// for conversion to another return type. As such, the local variable takes ownership.
r_output << "using godot_variant " << C_LOCAL_VARARG_RET " = ";
} else {
r_output << "using godot_variant " << C_LOCAL_RET " = ";
// Variant's [c_out] takes ownership of the variant value
r_output << "godot_variant " << C_LOCAL_RET " = ";
}
}