template <typename CHAR>
inline int CompareToBlankPadding(const CHAR *x, std::size_t chars) {
+ using UNSIGNED_CHAR = std::make_unsigned_t<CHAR>;
+ const auto blank{static_cast<UNSIGNED_CHAR>(' ')};
for (; chars-- > 0; ++x) {
- if (*x < ' ') {
+ const UNSIGNED_CHAR ux{*reinterpret_cast<const UNSIGNED_CHAR *>(x)};
+ if (ux < blank) {
return -1;
}
- if (*x > ' ') {
+ if (ux > blank) {
return 1;
}
}
std::make_tuple("abc", "def", 3, 3, -1),
std::make_tuple("ab ", "abc", 3, 2, 0),
std::make_tuple("abc", "abc", 2, 3, -1),
+ std::make_tuple("ab\xff", "ab ", 3, 2, 1),
+ std::make_tuple("ab ", "ab\xff", 2, 3, -1),
},
{
std::make_tuple(u"abc", u"abc", 3, 3, 0),