Merge pull request #356 from sheepandshepherd/variantleak2

Add C conversion constructors and fix new leak
pull/304/head
Marc 2020-06-05 21:16:37 +01:00 committed by GitHub
commit ceae5be727
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 4 deletions

View File

@ -57,6 +57,11 @@ class Object;
class Array { class Array {
godot_array _godot_array; godot_array _godot_array;
friend class Variant;
inline explicit Array(const godot_array &other) {
_godot_array = other;
}
public: public:
Array(); Array();
Array(const Array &other); Array(const Array &other);

View File

@ -12,6 +12,11 @@ namespace godot {
class Dictionary { class Dictionary {
godot_dictionary _godot_dictionary; godot_dictionary _godot_dictionary;
friend Variant::operator Dictionary() const;
inline explicit Dictionary(const godot_dictionary &other) {
_godot_dictionary = other;
}
public: public:
Dictionary(); Dictionary();
Dictionary(const Dictionary &other); Dictionary(const Dictionary &other);

View File

@ -261,14 +261,12 @@ Variant::operator RID() const {
} }
Variant::operator Dictionary() const { Variant::operator Dictionary() const {
Dictionary ret; Dictionary ret(godot::api->godot_variant_as_dictionary(&_godot_variant));
*(godot_dictionary *)&ret = godot::api->godot_variant_as_dictionary(&_godot_variant);
return ret; return ret;
} }
Variant::operator Array() const { Variant::operator Array() const {
Array ret; Array ret(godot::api->godot_variant_as_array(&_godot_variant));
*(godot_array *)&ret = godot::api->godot_variant_as_array(&_godot_variant);
return ret; return ret;
} }