From cd95e71df6eaf8f2a282b1da556c2cf1c9b09207 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Wed, 9 May 2018 13:57:56 -0700 Subject: - e63f59e34d34d483f89e4e6a7fe80805d1332329 This CL replicates github.com/abseil/abseil-cpp/pull/117 ... by Abseil Team - 8444789eefc1f20c0102041ee52ad841131dcf93 Import of CCTZ from Github. by Abseil Team - 847bf3389edff542cdfcc4fcfb5b1d7466a5d297 Suggest using MakeSpan rather than the explicit mutable r... by Abseil Team - b6f130c12a3b2e8ea14e848df523f3ca8d360d25 ABSL_ARRAYSIZE is now declared and documented more clearl... by Matt Armstrong - 8243bbcd7398e0cc1fed405b3c7cecc54fe77145 Don't dereference the begin() iterator of an empty string. by Derek Mauro - be817477eb17964a0f4c2a943c8281763ee269b0 Revert rename THREAD_ANNOTATION_ATTRIBUTE__ by Abseil Team - 940d4657f63acd7ff61d986558b0a38fa545a1fe Don't create '".text"' section when '.text' was intended. by Abseil Team - f6680d634b66537acec18121fbdca7c9083877b1 Rename THREAD_ANNOTATION_ATTRIBUTE__ by Abseil Team GitOrigin-RevId: e63f59e34d34d483f89e4e6a7fe80805d1332329 Change-Id: If6f2286d6cbfd7b822e83c6cc28fa3e752bb41a4 --- absl/strings/internal/str_join_internal.h | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'absl/strings/internal/str_join_internal.h') diff --git a/absl/strings/internal/str_join_internal.h b/absl/strings/internal/str_join_internal.h index c5fdc28..a734758 100644 --- a/absl/strings/internal/str_join_internal.h +++ b/absl/strings/internal/str_join_internal.h @@ -234,17 +234,19 @@ std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s, result_size += it->size(); } - STLStringResizeUninitialized(&result, result_size); - - // Joins strings - char* result_buf = &*result.begin(); - memcpy(result_buf, start->data(), start->size()); - result_buf += start->size(); - for (Iterator it = start; ++it != end;) { - memcpy(result_buf, s.data(), s.size()); - result_buf += s.size(); - memcpy(result_buf, it->data(), it->size()); - result_buf += it->size(); + if (result_size > 0) { + STLStringResizeUninitialized(&result, result_size); + + // Joins strings + char* result_buf = &*result.begin(); + memcpy(result_buf, start->data(), start->size()); + result_buf += start->size(); + for (Iterator it = start; ++it != end;) { + memcpy(result_buf, s.data(), s.size()); + result_buf += s.size(); + memcpy(result_buf, it->data(), it->size()); + result_buf += it->size(); + } } } -- cgit v1.2.3