diff options
author | reduz <reduzio@gmail.com> | 2022-02-11 12:30:49 +0100 |
---|---|---|
committer | reduz <reduzio@gmail.com> | 2022-02-11 12:30:49 +0100 |
commit | 3ad3a430638af0b64511d90d367e3b35245d9b48 (patch) | |
tree | 4536dfcd2f0929cb6e848b1fdff4fb08577430c5 /core/variant/variant.cpp | |
parent | 3aa7b7eaf2c24cc3e91d6a4155c0d6bdce88d91b (diff) | |
download | redot-engine-3ad3a430638af0b64511d90d367e3b35245d9b48.tar.gz |
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
Diffstat (limited to 'core/variant/variant.cpp')
-rw-r--r-- | core/variant/variant.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
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<RefCounted *>(static_cast<const RefCounted *>(p_object)); + if (!ref_counted->init_ref()) { + return false; + } + return true; +} void Variant::reference(const Variant &p_variant) { switch (type) { case NIL: |