summaryrefslogtreecommitdiff
path: root/absl
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2018-05-09 13:57:56 -0700
committerGravatar John Olson <jolson@google.com>2018-05-09 17:08:36 -0400
commitcd95e71df6eaf8f2a282b1da556c2cf1c9b09207 (patch)
tree19966a5ce40419a43bca17d15fe93cfda96a87c1 /absl
parenta193b3d3b7c3fe2785bff32125a5e1633d3bc0e2 (diff)
- e63f59e34d34d483f89e4e6a7fe80805d1332329 This CL replicates github.com/abseil/abseil-cpp/pull/117 ... by Abseil Team <absl-team@google.com>
- 8444789eefc1f20c0102041ee52ad841131dcf93 Import of CCTZ from Github. by Abseil Team <absl-team@google.com> - 847bf3389edff542cdfcc4fcfb5b1d7466a5d297 Suggest using MakeSpan rather than the explicit mutable r... by Abseil Team <absl-team@google.com> - b6f130c12a3b2e8ea14e848df523f3ca8d360d25 ABSL_ARRAYSIZE is now declared and documented more clearl... by Matt Armstrong <marmstrong@google.com> - 8243bbcd7398e0cc1fed405b3c7cecc54fe77145 Don't dereference the begin() iterator of an empty string. by Derek Mauro <dmauro@google.com> - be817477eb17964a0f4c2a943c8281763ee269b0 Revert rename THREAD_ANNOTATION_ATTRIBUTE__ by Abseil Team <absl-team@google.com> - 940d4657f63acd7ff61d986558b0a38fa545a1fe Don't create '".text"' section when '.text' was intended. by Abseil Team <absl-team@google.com> - f6680d634b66537acec18121fbdca7c9083877b1 Rename THREAD_ANNOTATION_ATTRIBUTE__ by Abseil Team <absl-team@google.com> GitOrigin-RevId: e63f59e34d34d483f89e4e6a7fe80805d1332329 Change-Id: If6f2286d6cbfd7b822e83c6cc28fa3e752bb41a4
Diffstat (limited to 'absl')
-rw-r--r--absl/base/macros.h15
-rw-r--r--absl/debugging/symbolize_test.cc8
-rw-r--r--absl/strings/internal/str_join_internal.h24
-rw-r--r--absl/time/internal/cctz/src/time_zone_lookup_test.cc1
-rw-r--r--absl/types/span.h3
5 files changed, 26 insertions, 25 deletions
diff --git a/absl/base/macros.h b/absl/base/macros.h
index 114a7be1..afa30300 100644
--- a/absl/base/macros.h
+++ b/absl/base/macros.h
@@ -36,21 +36,20 @@
// ABSL_ARRAYSIZE()
//
-// Returns the # of elements in an array as a compile-time constant, which can
-// be used in defining new arrays. If you use this macro on a pointer by
+// Returns the number of elements in an array as a compile-time constant, which
+// can be used in defining new arrays. If you use this macro on a pointer by
// mistake, you will get a compile-time error.
-//
-// Note: this template function declaration is used in defining arraysize.
-// Note that the function doesn't need an implementation, as we only
-// use its type.
+#define ABSL_ARRAYSIZE(array) \
+ (sizeof(::absl::macros_internal::ArraySizeHelper(array)))
+
namespace absl {
namespace macros_internal {
+// Note: this internal template function declaration is used by ABSL_ARRAYSIZE.
+// The function doesn't need a definition, as we only use its type.
template <typename T, size_t N>
auto ArraySizeHelper(const T (&array)[N]) -> char (&)[N];
} // namespace macros_internal
} // namespace absl
-#define ABSL_ARRAYSIZE(array) \
- (sizeof(::absl::macros_internal::ArraySizeHelper(array)))
// kLinkerInitialized
//
diff --git a/absl/debugging/symbolize_test.cc b/absl/debugging/symbolize_test.cc
index c1090b8d..5f2af47e 100644
--- a/absl/debugging/symbolize_test.cc
+++ b/absl/debugging/symbolize_test.cc
@@ -68,7 +68,7 @@ int ABSL_ATTRIBUTE_SECTION_VARIABLE(.text.exit) exit_func() {
return 0;
}
-int ABSL_ATTRIBUTE_SECTION_VARIABLE(.text) regular_func() {
+int /*ABSL_ATTRIBUTE_SECTION_VARIABLE(.text)*/ regular_func() {
return 0;
}
@@ -88,7 +88,7 @@ static volatile bool volatile_bool = false;
// Force the binary to be large enough that a THP .text remap will succeed.
static constexpr size_t kHpageSize = 1 << 21;
const char kHpageTextPadding[kHpageSize * 4] ABSL_ATTRIBUTE_SECTION_VARIABLE(
- ".text") = "";
+ .text) = "";
static char try_symbolize_buffer[4096];
@@ -236,9 +236,9 @@ TEST(Symbolize, SymbolizeWithDemanglingStackConsumption) {
const size_t kPageSize = 64 << 10;
// We place a read-only symbols into the .text section and verify that we can
// symbolize them and other symbols after remapping them.
-const char kPadding0[kPageSize * 4] ABSL_ATTRIBUTE_SECTION_VARIABLE(".text") =
+const char kPadding0[kPageSize * 4] ABSL_ATTRIBUTE_SECTION_VARIABLE(.text) =
"";
-const char kPadding1[kPageSize * 4] ABSL_ATTRIBUTE_SECTION_VARIABLE(".text") =
+const char kPadding1[kPageSize * 4] ABSL_ATTRIBUTE_SECTION_VARIABLE(.text) =
"";
static int FilterElfHeader(struct dl_phdr_info *info, size_t size, void *data) {
diff --git a/absl/strings/internal/str_join_internal.h b/absl/strings/internal/str_join_internal.h
index c5fdc287..a734758c 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();
+ }
}
}
diff --git a/absl/time/internal/cctz/src/time_zone_lookup_test.cc b/absl/time/internal/cctz/src/time_zone_lookup_test.cc
index 2dfe53b2..f97eab02 100644
--- a/absl/time/internal/cctz/src/time_zone_lookup_test.cc
+++ b/absl/time/internal/cctz/src/time_zone_lookup_test.cc
@@ -415,7 +415,6 @@ const char* const kTimeZoneNames[] = {
"CST6CDT",
"Canada/Atlantic",
"Canada/Central",
- "Canada/East-Saskatchewan",
"Canada/Eastern",
"Canada/Mountain",
"Canada/Newfoundland",
diff --git a/absl/types/span.h b/absl/types/span.h
index 0ca30d1d..f781353c 100644
--- a/absl/types/span.h
+++ b/absl/types/span.h
@@ -290,7 +290,8 @@ class Span {
constexpr Span(T (&a)[N]) noexcept // NOLINT(runtime/explicit)
: Span(a, N) {}
- // Explicit reference constructor for a mutable `Span<T>` type
+ // Explicit reference constructor for a mutable `Span<T>` type. Can be
+ // replaced with MakeSpan() to infer the type parameter.
template <typename V, typename = EnableIfConvertibleFrom<V>,
typename = EnableIfMutableView<V>>
explicit Span(V& v) noexcept // NOLINT(runtime/references)