added class member, safety check in the destructor

pull/567/head
DhruvMaroo 2021-05-31 00:52:36 +05:30
parent 492285f681
commit cd05371ce8
2 changed files with 9 additions and 5 deletions

View File

@ -17,6 +17,7 @@ class CharString {
friend class String;
godot_char_string _char_string;
bool _deleted = false;
public:
~CharString();

View File

@ -74,12 +74,15 @@ String::String(const String &other) {
}
String::String(String&& other) {
godot::api->godot_string_new_copy(&_godot_string, &other._godot_string);
godot::api->godot_string_destroy(&_godot_string);
_godot_string = other._godot_string;
other._deleted = true;
}
String::~String() {
godot::api->godot_string_destroy(&_godot_string);
if (!_deleted) {
godot::api->godot_string_destroy(&_godot_string);
_deleted = true;
}
}
wchar_t &String::operator[](const int idx) {
@ -101,8 +104,8 @@ void String::operator=(const String &s) {
void String::operator=(String&& s) {
godot::api->godot_string_destroy(&_godot_string);
godot::api->godot_string_new_copy(&_godot_string, &s._godot_string);
godot::api->godot_string_destroy(&s._godot_string);
_godot_string = s._godot_string;
s._deleted = true;
}
bool String::operator==(const String &s) const {