Skip to content

Commit 72ff46d

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

File tree

1 file changed

+10
-19
lines changed

1 file changed

+10
-19
lines changed

libcxx/include/string

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -749,40 +749,31 @@ 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+
template <size_t _PaddingSize>
753+
struct __padding {
754+
char __padding_[_PaddingSize];
755+
};
756+
757+
template <>
758+
struct __padding<0> {};
759+
753760
template <class _CharT, size_t __min_cap, size_t _Padding = sizeof(_CharT) - 1>
754761
struct __short_layout_alternate {
755762
_CharT __data_[__min_cap];
756-
unsigned char __padding_[_Padding];
763+
_LIBCPP_NO_UNIQUE_ADDRESS __padding<_Padding> __padding_;
757764
unsigned char __size_ : 7;
758765
unsigned char __is_long_ : 1;
759766
};
760767

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
768768
template <class _CharT, size_t __min_cap, size_t _Padding = sizeof(_CharT) - 1>
769769
struct __short_layout_classic {
770770
struct _LIBCPP_PACKED {
771771
unsigned char __is_long_ : 1;
772772
unsigned char __size_ : 7;
773773
};
774-
char __padding_[_Padding];
775-
_CharT __data_[__min_cap];
776-
};
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-
};
774+
_LIBCPP_NO_UNIQUE_ADDRESS __padding<_Padding> __padding_;
783775
_CharT __data_[__min_cap];
784776
};
785-
#endif
786777

787778
template <class _CharT, class _Traits, class _Allocator>
788779
class basic_string {

0 commit comments

Comments
 (0)