diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d99c1bbdabc..c37d3b1bfe3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,21 @@ +2020-01-16 Kai-Uwe Eckhardt + Matthew Bauer + Jonathan Wakely + + PR bootstrap/64271 (partial) + * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type + to unsigned short. + (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit) + (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync + definitions with NetBSD upstream. + (ctype_base::blank): Use _CTYPE_BL. + * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove + Declaration. + (ctype::classic_table): Use _C_ctype_tab_ instead of _C_ctype_. + (ctype::do_toupper, ctype::do_tolower): Cast char + parameters to unsigned char. + * config/os/bsd/netbsd/ctype_inline.h (ctype::is): Likewise. + 2020-01-16 François Dumont PR libstdc++/91263 diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h index 340bd8e3d4e..28bf232ba83 100644 --- a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h +++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h @@ -43,35 +43,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // NB: Offsets into ctype::_M_table force a particular size // on the mask type. Because of this, we don't use an enum. - typedef unsigned char mask; + typedef unsigned short mask; -#ifndef _CTYPE_U - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _N | _X; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#else - static const mask upper = _CTYPE_U; - static const mask lower = _CTYPE_L; - static const mask alpha = _CTYPE_U | _CTYPE_L; - static const mask digit = _CTYPE_N; - static const mask xdigit = _CTYPE_N | _CTYPE_X; - static const mask space = _CTYPE_S; - static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B; - static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N; - static const mask cntrl = _CTYPE_C; - static const mask punct = _CTYPE_P; - static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N; -#endif + static const mask upper = _CTYPE_U; + static const mask lower = _CTYPE_L; + static const mask alpha = _CTYPE_A; + static const mask digit = _CTYPE_D; + static const mask xdigit = _CTYPE_X; + static const mask space = _CTYPE_S; + static const mask print = _CTYPE_R; + static const mask graph = _CTYPE_G; + static const mask cntrl = _CTYPE_C; + static const mask punct = _CTYPE_P; + static const mask alnum = _CTYPE_A | _CTYPE_D; #if __cplusplus >= 201103L - static const mask blank = space; + static const mask blank = _CTYPE_BL; #endif }; diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc b/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc index 0680bb350c3..86f7828517d 100644 --- a/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc +++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc @@ -38,11 +38,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Information as gleaned from /usr/include/ctype.h - extern "C" const u_int8_t _C_ctype_[]; - const ctype_base::mask* ctype::classic_table() throw() - { return _C_ctype_ + 1; } + { return _C_ctype_tab_ + 1; } ctype::ctype(__c_locale, const mask* __table, bool __del, size_t __refs) @@ -69,14 +67,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION char ctype::do_toupper(char __c) const - { return ::toupper((int) __c); } + { return ::toupper((int)(unsigned char) __c); } const char* ctype::do_toupper(char* __low, const char* __high) const { while (__low < __high) { - *__low = ::toupper((int) *__low); + *__low = ::toupper((int)(unsigned char) *__low); ++__low; } return __high; @@ -84,14 +82,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION char ctype::do_tolower(char __c) const - { return ::tolower((int) __c); } + { return ::tolower((int)(unsigned char) __c); } const char* ctype::do_tolower(char* __low, const char* __high) const { while (__low < __high) { - *__low = ::tolower((int) *__low); + *__low = ::tolower((int)(unsigned char) *__low); ++__low; } return __high; diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h b/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h index 6395433e1ac..4536690b6d8 100644 --- a/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h +++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h @@ -48,7 +48,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION is(const char* __low, const char* __high, mask* __vec) const { while (__low < __high) - *__vec++ = _M_table[*__low++]; + *__vec++ = _M_table[(unsigned char)*__low++]; return __high; }