Skip to content

Commit

Permalink
Make SanitizerSafeCopy() constexpr, and check for constant evaluati…
Browse files Browse the repository at this point in the history
…on (#1399)

Also update test Docker container so that LTS patches can be tested

This patch cherry-picks 2 commits:
a0f9b46
35e8e3f
  • Loading branch information
derekmauro authored Feb 18, 2023
1 parent 78be636 commit c8a2f92
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
2 changes: 1 addition & 1 deletion absl/base/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
// LTS releases can be obtained from
// https://github.com/abseil/abseil-cpp/releases.
#define ABSL_LTS_RELEASE_VERSION 20230125
#define ABSL_LTS_RELEASE_PATCH_LEVEL 0
#define ABSL_LTS_RELEASE_PATCH_LEVEL 1

// Helper macro to convert a CPP variable to a string literal.
#define ABSL_INTERNAL_DO_TOKEN_STR(x) #x
Expand Down
20 changes: 12 additions & 8 deletions absl/strings/internal/cord_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -768,18 +768,22 @@ class InlineData {
}

#ifdef ABSL_INTERNAL_CORD_HAVE_SANITIZER
Rep SanitizerSafeCopy() const {
Rep res;
if (is_tree()) {
res = *this;
constexpr Rep SanitizerSafeCopy() const {
if (!absl::is_constant_evaluated()) {
Rep res;
if (is_tree()) {
res = *this;
} else {
res.set_tag(tag());
memcpy(res.as_chars(), as_chars(), inline_size());
}
return res;
} else {
res.set_tag(tag());
memcpy(res.as_chars(), as_chars(), inline_size());
return *this;
}
return res;
}
#else
const Rep& SanitizerSafeCopy() const { return *this; }
constexpr const Rep& SanitizerSafeCopy() const { return *this; }
#endif

// If the data has length <= kMaxInline, we store it in `data`, and
Expand Down
4 changes: 2 additions & 2 deletions ci/linux_docker_containers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
# Test scripts should source this file to get the identifiers.

readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20201026"
readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20220217"
readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20220217"
readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20230217"
readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20230217"
readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20230120"

0 comments on commit c8a2f92

Please sign in to comment.