C#: Fix premature free of returned Variant in vararg methods
Notably, this fixes obscure issues after calling `script.New()` when the returned instance is a `RefCounted`.
This commit is contained in:
parent
bc5d67c613
commit
833b252ce7
@ -2489,9 +2489,12 @@ Error BindingsGenerator::_generate_cs_native_calls(const InternalCall &p_icall,
|
|||||||
|
|
||||||
if (!ret_void) {
|
if (!ret_void) {
|
||||||
if (return_type->cname != name_cache.type_Variant) {
|
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 " = ";
|
r_output << "using godot_variant " << C_LOCAL_VARARG_RET " = ";
|
||||||
} else {
|
} 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 " = ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user