Fix VariantInternal initialization and setting of object

- Initialize Object pointer to nullptr so it's not used by mistake.
- When setting an Object check if it's a reference so refcounting works
  as intended.
This commit is contained in:
George Marques 2020-11-30 14:27:44 -03:00
parent b9a2787bd1
commit 029fd88adb
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D
3 changed files with 24 additions and 22 deletions

View file

@ -1653,7 +1653,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
VariantInternal::initialize(ret, Variant::OBJECT);
Object **ret_opaque = VariantInternal::get_object(ret);
method->ptrcall(base_obj, argptrs, ret_opaque);
VariantInternal::set_object(ret, *ret_opaque);
VariantInternal::object_assign(ret, *ret_opaque); // Set so ID is correct too.
#ifdef DEBUG_ENABLED
if (GDScriptLanguage::get_singleton()->profiling) {