added class member, safety check in the destructor
parent
492285f681
commit
cd05371ce8
|
@ -17,6 +17,7 @@ class CharString {
|
|||
friend class String;
|
||||
|
||||
godot_char_string _char_string;
|
||||
bool _deleted = false;
|
||||
|
||||
public:
|
||||
~CharString();
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue