Commit c79e6b3d by Derek Mauro Committed by Copybara-Service

Use absl::NoDestructor to replace a bespoke optimized implementation

PiperOrigin-RevId: 580596792
Change-Id: I2f79c9b719e7e95a181b6641e8da191cf0a4d71a
parent 8c488c44
......@@ -53,6 +53,7 @@ cc_library(
"//absl/base:atomic_hook",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/base:no_destructor",
"//absl/base:raw_logging_internal",
"//absl/base:strerror",
"//absl/container:inlined_vector",
......
......@@ -36,6 +36,7 @@ absl_cc_library(
absl::function_ref
absl::inlined_vector
absl::memory
absl::no_destructor
absl::optional
absl::raw_logging_internal
absl::span
......
......@@ -28,6 +28,7 @@
#include "absl/base/internal/raw_logging.h"
#include "absl/base/internal/strerror.h"
#include "absl/base/macros.h"
#include "absl/base/no_destructor.h"
#include "absl/debugging/stacktrace.h"
#include "absl/debugging/symbolize.h"
#include "absl/status/internal/status_internal.h"
......@@ -90,11 +91,8 @@ std::ostream& operator<<(std::ostream& os, StatusCode code) {
}
const std::string* Status::EmptyString() {
static union EmptyString {
std::string str;
~EmptyString() {}
} empty = {{}};
return &empty.str;
static const absl::NoDestructor<std::string> kEmpty;
return kEmpty.get();
}
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
......@@ -102,8 +100,8 @@ constexpr const char Status::kMovedFromString[];
#endif
const std::string* Status::MovedFromString() {
static std::string* moved_from_string = new std::string(kMovedFromString);
return moved_from_string;
static const absl::NoDestructor<std::string> kMovedFrom(kMovedFromString);
return kMovedFrom.get();
}
Status::Status(absl::StatusCode code, absl::string_view msg)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment