From 3ad3a430638af0b64511d90d367e3b35245d9b48 Mon Sep 17 00:00:00 2001 From: reduz Date: Fri, 11 Feb 2022 12:30:49 +0100 Subject: Fix Variant Ref<> assignment. -Creating from object pointer via funcptr API was missing reference initialization. -Supersedes https://github.com/godotengine/godot-cpp/pull/662 -Fixes several crashes in GDExtension --- core/variant/variant.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'core/variant/variant.cpp') diff --git a/core/variant/variant.cpp b/core/variant/variant.cpp index fcfa530388..3d11ed6303 100644 --- a/core/variant/variant.cpp +++ b/core/variant/variant.cpp @@ -1023,6 +1023,13 @@ bool Variant::is_null() const { } } +bool Variant::initialize_ref(Object *p_object) { + RefCounted *ref_counted = const_cast(static_cast(p_object)); + if (!ref_counted->init_ref()) { + return false; + } + return true; +} void Variant::reference(const Variant &p_variant) { switch (type) { case NIL: -- cgit v1.2.3