Skip to content

Commit

Permalink
Merge pull request #83619 from YuriSizov/core-our-vessel-only-has-one…
Browse files Browse the repository at this point in the history
…-node-left

Fix StringName leaks in VariantParser
  • Loading branch information
akien-mga committed Oct 20, 2023
2 parents 7065e2e + 4952d37 commit a63bff4
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 9 deletions.
10 changes: 4 additions & 6 deletions core/string/string_name.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,9 @@ void StringName::cleanup() {
lost_strings++;

if (OS::get_singleton()->is_stdout_verbose()) {
if (d->cname) {
print_line("Orphan StringName: " + String(d->cname));
} else {
print_line("Orphan StringName: " + String(d->name));
}
String dname = String(d->cname ? d->cname : d->name);

print_line(vformat("Orphan StringName: %s (static: %d, total: %d)", dname, d->static_count.get(), d->refcount.get()));
}
}

Expand All @@ -113,7 +111,7 @@ void StringName::cleanup() {
}
}
if (lost_strings) {
print_verbose("StringName: " + itos(lost_strings) + " unclaimed string names at exit.");
print_verbose(vformat("StringName: %d unclaimed string names at exit.", lost_strings));
}
configured = false;
}
Expand Down
2 changes: 1 addition & 1 deletion core/variant/variant_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1075,7 +1075,7 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
return ERR_PARSE_ERROR;
}

static HashMap<StringName, Variant::Type> builtin_types;
static HashMap<String, Variant::Type> builtin_types;
if (builtin_types.is_empty()) {
for (int i = 1; i < Variant::VARIANT_MAX; i++) {
builtin_types[Variant::get_type_name((Variant::Type)i)] = (Variant::Type)i;
Expand Down
4 changes: 2 additions & 2 deletions modules/webrtc/webrtc_peer_connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ StringName WebRTCPeerConnection::default_extension;

void WebRTCPeerConnection::set_default_extension(const StringName &p_extension) {
ERR_FAIL_COND_MSG(!ClassDB::is_parent_class(p_extension, WebRTCPeerConnectionExtension::get_class_static()), vformat("Can't make %s the default WebRTC extension since it does not extend WebRTCPeerConnectionExtension.", p_extension));
default_extension = p_extension;
default_extension = StringName(p_extension, true);
}

WebRTCPeerConnection *WebRTCPeerConnection::create() {
#ifdef WEB_ENABLED
return memnew(WebRTCPeerConnectionJS);
#else
if (default_extension == String()) {
if (default_extension == StringName()) {
WARN_PRINT_ONCE("No default WebRTC extension configured.");
return memnew(WebRTCPeerConnectionExtension);
}
Expand Down

0 comments on commit a63bff4

Please sign in to comment.