Skip to content

Commit 8d4bc53

Browse files
fixup! fixup! [libc++][string] Remove potential non-trailing 0-length array
1 parent f17a954 commit 8d4bc53

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

libcxx/include/string

+11-19
Original file line numberDiff line numberDiff line change
@@ -749,40 +749,32 @@ struct __can_be_converted_to_string_view
749749
struct __uninitialized_size_tag {};
750750
struct __init_with_sentinel_tag {};
751751

752-
#ifdef _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
752+
753+
template <size_t _PaddingSize>
754+
struct __padding {
755+
char __padding_[_PaddingSize];
756+
};
757+
758+
template <>
759+
struct __padding<0> {};
760+
753761
template <class _CharT, size_t __min_cap, size_t _Padding = sizeof(_CharT) - 1>
754762
struct __short_layout_alternate {
755763
_CharT __data_[__min_cap];
756-
unsigned char __padding_[_Padding];
764+
_LIBCPP_NO_UNIQUE_ADDRESS __padding __padding_<_Padding>;
757765
unsigned char __size_ : 7;
758766
unsigned char __is_long_ : 1;
759767
};
760768

761-
template <class _CharT, size_t __min_cap>
762-
struct __short_layout_alternate<_CharT, __min_cap, 0> {
763-
_CharT __data_[__min_cap];
764-
unsigned char __size_ : 7;
765-
unsigned char __is_long_ : 1;
766-
};
767-
#else
768769
template <class _CharT, size_t __min_cap, size_t _Padding = sizeof(_CharT) - 1>
769770
struct __short_layout_classic {
770771
struct _LIBCPP_PACKED {
771772
unsigned char __is_long_ : 1;
772773
unsigned char __size_ : 7;
773774
};
774-
char __padding_[_Padding];
775+
_LIBCPP_NO_UNIQUE_ADDRESS __padding __padding_<_Padding>;
775776
_CharT __data_[__min_cap];
776777
};
777-
template <class _CharT, size_t __min_cap>
778-
struct __short_layout_classic<_CharT, __min_cap, 0> {
779-
struct _LIBCPP_PACKED {
780-
unsigned char __is_long_ : 1;
781-
unsigned char __size_ : 7;
782-
};
783-
_CharT __data_[__min_cap];
784-
};
785-
#endif
786778

787779
template <class _CharT, class _Traits, class _Allocator>
788780
class basic_string {

0 commit comments

Comments
 (0)