diff --git a/absl/strings/BUILD.bazel b/absl/strings/BUILD.bazel index bcf0c384..34c90ce6 100644 --- a/absl/strings/BUILD.bazel +++ b/absl/strings/BUILD.bazel @@ -627,6 +627,7 @@ cc_library( ":cordz_update_scope", ":cordz_update_tracker", ":internal", + ":resize_and_overwrite", ":strings", "//absl/base:config", "//absl/base:core_headers", diff --git a/absl/strings/CMakeLists.txt b/absl/strings/CMakeLists.txt index 764d5cd8..da3a54a7 100644 --- a/absl/strings/CMakeLists.txt +++ b/absl/strings/CMakeLists.txt @@ -1026,6 +1026,7 @@ absl_cc_library( absl::raw_logging_internal absl::span absl::strings + absl::strings_resize_and_overwrite absl::type_traits absl::weakly_mixed_integer PUBLIC diff --git a/absl/strings/cord.cc b/absl/strings/cord.cc index a7e09949..91fcf91c 100644 --- a/absl/strings/cord.cc +++ b/absl/strings/cord.cc @@ -52,6 +52,7 @@ #include "absl/strings/internal/cordz_update_tracker.h" #include "absl/strings/internal/resize_uninitialized.h" #include "absl/strings/match.h" +#include "absl/strings/resize_and_overwrite.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" #include "absl/strings/strip.h" @@ -1055,8 +1056,11 @@ void CopyCordToString(const Cord& src, std::string* absl_nonnull dst) { if (!src.contents_.is_tree()) { src.contents_.CopyTo(dst); } else { - absl::strings_internal::STLStringResizeUninitialized(dst, src.size()); - src.CopyToArraySlowPath(&(*dst)[0]); + StringResizeAndOverwrite(*dst, src.size(), + [&src](char* buf, size_t buf_size) { + src.CopyToArraySlowPath(buf); + return buf_size; + }); } }