1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-22 15:06:45 +00:00

StringName: fix returning dangling data from char constructor.

Fixes a copy paste mistake in the `StringName(const char *,bool)` constructor,
to match the same form as the other two constrcutors.
This fixes a case where this constructor can return a dangling pointer and cause use-after-free.
This commit is contained in:
Lyuma
2023-02-03 19:19:52 -08:00
parent 18e827ee46
commit 82c52eab6c

View File

@@ -226,8 +226,7 @@ StringName::StringName(const char *p_name, bool p_static) {
_data = _data->next;
}
if (_data) {
if (_data->refcount.ref()) {
if (_data && _data->refcount.ref()) {
// exists
if (p_static) {
_data->static_count.increment();
@@ -237,8 +236,6 @@ StringName::StringName(const char *p_name, bool p_static) {
_data->debug_references++;
}
#endif
}
return;
}
@@ -288,8 +285,7 @@ StringName::StringName(const StaticCString &p_static_string, bool p_static) {
_data = _data->next;
}
if (_data) {
if (_data->refcount.ref()) {
if (_data && _data->refcount.ref()) {
// exists
if (p_static) {
_data->static_count.increment();
@@ -301,7 +297,6 @@ StringName::StringName(const StaticCString &p_static_string, bool p_static) {
#endif
return;
}
}
_data = memnew(_Data);
@@ -348,8 +343,7 @@ StringName::StringName(const String &p_name, bool p_static) {
_data = _data->next;
}
if (_data) {
if (_data->refcount.ref()) {
if (_data && _data->refcount.ref()) {
// exists
if (p_static) {
_data->static_count.increment();
@@ -361,7 +355,6 @@ StringName::StringName(const String &p_name, bool p_static) {
#endif
return;
}
}
_data = memnew(_Data);
_data->name = p_name;