summaryrefslogtreecommitdiffstats
path: root/core/variant/variant.cpp
diff options
context:
space:
mode:
authorreduz <reduzio@gmail.com>2022-02-11 12:30:49 +0100
committerreduz <reduzio@gmail.com>2022-02-11 12:30:49 +0100
commit3ad3a430638af0b64511d90d367e3b35245d9b48 (patch)
tree4536dfcd2f0929cb6e848b1fdff4fb08577430c5 /core/variant/variant.cpp
parent3aa7b7eaf2c24cc3e91d6a4155c0d6bdce88d91b (diff)
downloadredot-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.cpp7
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: