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 <hta@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43288}
diff --git a/api/video_codecs/sdp_video_format.cc b/api/video_codecs/sdp_video_format.cc
index 1986573..2b28ffa 100644
--- a/api/video_codecs/sdp_video_format.cc
+++ b/api/video_codecs/sdp_video_format.cc
@@ -181,7 +181,7 @@
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 1f22e35..758f2ea 100644
--- a/net/dcsctp/packet/chunk/forward_tsn_chunk.cc
+++ b/net/dcsctp/packet/chunk/forward_tsn_chunk.cc
@@ -90,6 +90,6 @@
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 bb79096..6caa7da 100644
--- a/p2p/base/connection.cc
+++ b/p2p/base/connection.cc
@@ -894,7 +894,7 @@
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 225c733..521ec4e 100644
--- a/pc/simulcast_sdp_serializer.cc
+++ b/pc/simulcast_sdp_serializer.cc
@@ -196,7 +196,7 @@
<< 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 @@
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 cab245a..2f17eef 100644
--- a/pc/webrtc_sdp.cc
+++ b/pc/webrtc_sdp.cc
@@ -804,7 +804,7 @@
// Gets "a=rtcp" line if found default RTCP candidate from `candidates`.
static std::string GetRtcpLine(const std::vector<Candidate>& 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 @@
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.