From 7085a884aa6eef94e04ff9778747dbeb95acc7aa Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 22 Oct 2024 19:42:24 +0000 Subject: [PATCH] Avoid string duplication when returning StringBuilder strings The const-ref result of .str() must be copied into the returned value, whereas the result of .Release() can be moved. Bug: webrtc:374845009 Change-Id: I3abc98be30ce9947127c7664f5ffa6846b772ea2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366480 Reviewed-by: Harald Alvestrand Commit-Queue: Tomas Gunnarsson Reviewed-by: Tomas Gunnarsson Cr-Commit-Position: refs/heads/main@{#43288} --- api/video_codecs/sdp_video_format.cc | 2 +- net/dcsctp/packet/chunk/forward_tsn_chunk.cc | 2 +- p2p/base/connection.cc | 2 +- pc/simulcast_sdp_serializer.cc | 4 ++-- pc/webrtc_sdp.cc | 5 ++--- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/api/video_codecs/sdp_video_format.cc b/api/video_codecs/sdp_video_format.cc index 1986573de9..2b28ffa2a4 100644 --- a/api/video_codecs/sdp_video_format.cc +++ b/api/video_codecs/sdp_video_format.cc @@ -181,7 +181,7 @@ std::string SdpVideoFormat::ToString() const { builder << "]"; } - return builder.str(); + return builder.Release(); } bool SdpVideoFormat::IsSameCodec(const SdpVideoFormat& other) const { diff --git a/net/dcsctp/packet/chunk/forward_tsn_chunk.cc b/net/dcsctp/packet/chunk/forward_tsn_chunk.cc index 1f22e35431..758f2ea78b 100644 --- a/net/dcsctp/packet/chunk/forward_tsn_chunk.cc +++ b/net/dcsctp/packet/chunk/forward_tsn_chunk.cc @@ -90,6 +90,6 @@ std::string ForwardTsnChunk::ToString() const { for (const auto& skipped : skipped_streams()) { sb << ", skip " << skipped.stream_id.value() << ":" << *skipped.ssn; } - return sb.str(); + return sb.Release(); } } // namespace dcsctp diff --git a/p2p/base/connection.cc b/p2p/base/connection.cc index bb79096abe..6caa7da40e 100644 --- a/p2p/base/connection.cc +++ b/p2p/base/connection.cc @@ -894,7 +894,7 @@ void Connection::PrintPingsSinceLastResponse(std::string* s, size_t max) { oss << rtc::hex_encode(ping.id) << " "; } } - *s = oss.str(); + *s = oss.Release(); } bool Connection::selected() const { diff --git a/pc/simulcast_sdp_serializer.cc b/pc/simulcast_sdp_serializer.cc index 225c733bfe..521ec4ec0c 100644 --- a/pc/simulcast_sdp_serializer.cc +++ b/pc/simulcast_sdp_serializer.cc @@ -196,7 +196,7 @@ std::string SimulcastSdpSerializer::SerializeSimulcastDescription( << simulcast.receive_layers(); } - return sb.str(); + return sb.Release(); } // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13#section-5.1 @@ -305,7 +305,7 @@ std::string SimulcastSdpSerializer::SerializeRidDescription( propertyDelimiter = kDelimiterSemicolon; } - return builder.str(); + return builder.Release(); } // https://tools.ietf.org/html/draft-ietf-mmusic-rid-15#section-10 diff --git a/pc/webrtc_sdp.cc b/pc/webrtc_sdp.cc index cab245a87e..2f17eef53d 100644 --- a/pc/webrtc_sdp.cc +++ b/pc/webrtc_sdp.cc @@ -804,7 +804,7 @@ static void GetDefaultDestination(const std::vector& candidates, // Gets "a=rtcp" line if found default RTCP candidate from `candidates`. static std::string GetRtcpLine(const std::vector& candidates) { - std::string rtcp_line, rtcp_port, rtcp_ip, addr_type; + std::string rtcp_port, rtcp_ip, addr_type; GetDefaultDestination(candidates, ICE_CANDIDATE_COMPONENT_RTCP, &rtcp_port, &rtcp_ip, &addr_type); // Found default RTCP candidate. @@ -819,8 +819,7 @@ static std::string GetRtcpLine(const std::vector& candidates) { InitAttrLine(kAttributeRtcp, &os); os << kSdpDelimiterColon << rtcp_port << " " << kConnectionNettype << " " << addr_type << " " << rtcp_ip; - rtcp_line = os.str(); - return rtcp_line; + return os.Release(); } // Get candidates according to the mline index from SessionDescriptionInterface.