diff --git a/absl/cleanup/internal/cleanup.h b/absl/cleanup/internal/cleanup.h index 967513a8..4dd6f913 100644 --- a/absl/cleanup/internal/cleanup.h +++ b/absl/cleanup/internal/cleanup.h @@ -88,7 +88,7 @@ class Storage { private: bool is_callback_engaged_; - alignas(Callback) char callback_buffer_[sizeof(Callback)]; + alignas(Callback) unsigned char callback_buffer_[sizeof(Callback)]; }; } // namespace cleanup_internal diff --git a/absl/container/fixed_array.h b/absl/container/fixed_array.h index b213eb13..8bf8e6cf 100644 --- a/absl/container/fixed_array.h +++ b/absl/container/fixed_array.h @@ -447,7 +447,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray { private: ABSL_ADDRESS_SANITIZER_REDZONE(redzone_begin_); - alignas(StorageElement) char buff_[sizeof(StorageElement[inline_elements])]; + alignas(StorageElement) unsigned char buff_[sizeof( + StorageElement[inline_elements])]; ABSL_ADDRESS_SANITIZER_REDZONE(redzone_end_); }; diff --git a/absl/container/internal/inlined_vector.h b/absl/container/internal/inlined_vector.h index a3b14a22..b0d3f077 100644 --- a/absl/container/internal/inlined_vector.h +++ b/absl/container/internal/inlined_vector.h @@ -543,7 +543,7 @@ class Storage { (std::max)(N, sizeof(Allocated) / sizeof(ValueType)); struct Inlined { - alignas(ValueType) char inlined_data[sizeof( + alignas(ValueType) unsigned char inlined_data[sizeof( ValueType[kOptimalInlinedSize])]; }; diff --git a/absl/flags/internal/flag.h b/absl/flags/internal/flag.h index a243b795..ef739e7f 100644 --- a/absl/flags/internal/flag.h +++ b/absl/flags/internal/flag.h @@ -783,7 +783,7 @@ class FlagImpl final : public CommandLineFlag { // heap allocation during initialization, which is both slows program startup // and can fail. Using reserved space + placement new allows us to avoid both // problems. - alignas(absl::Mutex) mutable char data_guard_[sizeof(absl::Mutex)]; + alignas(absl::Mutex) mutable unsigned char data_guard_[sizeof(absl::Mutex)]; }; #if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop @@ -876,7 +876,8 @@ class FlagImplPeer { template void* FlagOps(FlagOp op, const void* v1, void* v2, void* v3) { struct AlignedSpace { - alignas(MaskedPointer::RequiredAlignment()) alignas(T) char buf[sizeof(T)]; + alignas(MaskedPointer::RequiredAlignment()) alignas( + T) unsigned char buf[sizeof(T)]; }; using Allocator = std::allocator; switch (op) { diff --git a/absl/flags/internal/registry.h b/absl/flags/internal/registry.h index 4b68c85f..a57ba3c5 100644 --- a/absl/flags/internal/registry.h +++ b/absl/flags/internal/registry.h @@ -73,7 +73,7 @@ void FinalizeRegistry(); // // Retire flag with name "name" and type indicated by ops. -void Retire(const char* name, FlagFastTypeId type_id, char* buf); +void Retire(const char* name, FlagFastTypeId type_id, unsigned char* buf); constexpr size_t kRetiredFlagObjSize = 3 * sizeof(void*); constexpr size_t kRetiredFlagObjAlignment = alignof(void*); @@ -87,7 +87,7 @@ class RetiredFlag { } private: - alignas(kRetiredFlagObjAlignment) char buf_[kRetiredFlagObjSize]; + alignas(kRetiredFlagObjAlignment) unsigned char buf_[kRetiredFlagObjSize]; }; } // namespace flags_internal diff --git a/absl/flags/reflection.cc b/absl/flags/reflection.cc index ea856ff9..b8b4a2ea 100644 --- a/absl/flags/reflection.cc +++ b/absl/flags/reflection.cc @@ -289,11 +289,10 @@ class RetiredFlagObj final : public CommandLineFlag { } // namespace -void Retire(const char* name, FlagFastTypeId type_id, char* buf) { +void Retire(const char* name, FlagFastTypeId type_id, unsigned char* buf) { static_assert(sizeof(RetiredFlagObj) == kRetiredFlagObjSize, ""); static_assert(alignof(RetiredFlagObj) == kRetiredFlagObjAlignment, ""); - auto* flag = ::new (static_cast(buf)) - flags_internal::RetiredFlagObj(name, type_id); + auto* flag = ::new (buf) flags_internal::RetiredFlagObj(name, type_id); FlagRegistry::GlobalRegistry().RegisterFlag(*flag, nullptr); } diff --git a/absl/functional/internal/any_invocable.h b/absl/functional/internal/any_invocable.h index 6bfc4d1a..167d947d 100644 --- a/absl/functional/internal/any_invocable.h +++ b/absl/functional/internal/any_invocable.h @@ -174,7 +174,7 @@ union TypeErasedState { } remote; // Local-storage for the type-erased object when small and trivial enough - alignas(kAlignment) char storage[kStorageSize]; + alignas(kAlignment) unsigned char storage[kStorageSize]; }; // A typed accessor for the object in `TypeErasedState` storage diff --git a/absl/synchronization/mutex_test.cc b/absl/synchronization/mutex_test.cc index 2dc4d739..d8c4fdf2 100644 --- a/absl/synchronization/mutex_test.cc +++ b/absl/synchronization/mutex_test.cc @@ -1725,7 +1725,7 @@ TEST(Mutex, Logging) { TEST(Mutex, LoggingAddressReuse) { // Repeatedly re-create a Mutex with debug logging at the same address. ScopedInvariantDebugging scoped_debugging; - alignas(absl::Mutex) char storage[sizeof(absl::Mutex)]; + alignas(absl::Mutex) unsigned char storage[sizeof(absl::Mutex)]; auto invariant = +[](void *alive) { EXPECT_TRUE(*static_cast(alive)); }; constexpr size_t kIters = 10;