On Mon, 17 Aug 2026 at 19:36, Pietro Monteiro <[email protected]> wrote: > > Commit r17-3313-g15419a00a29342 fixed the build on newer OpenBSD > versions. However, on platforms where char is signed, the mask > constants may be implicitly converted to negative values, causing > overflow/signedness change warnings. Add static_cast<mask>(...) to > make the conversion explicit and silence the warnings. > > libstdc++-v3/ChangeLog: > > * config/os/bsd/openbsd/ctype_base.h: Use static_cast when > setting the masks. > > Signed-off-by: Pietro Monteiro <[email protected]>
There's a typo in the commit subject line: "libstc++" OK for trunk (and release branches if you backport the original patch). > --- > .../config/os/bsd/openbsd/ctype_base.h | 44 +++++++++---------- > 1 file changed, 22 insertions(+), 22 deletions(-) > > diff --git a/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h > b/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h > index e1d982f81cd..f77a8cc5f5f 100644 > --- a/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h > +++ b/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h > @@ -44,30 +44,30 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > > #ifdef _CTYPE_S > // OpenBSD 7.5 uses this style of define. > - 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; > + static const mask upper = static_cast<mask>(_CTYPE_U); > + static const mask lower = static_cast<mask>(_CTYPE_L); > + static const mask alpha = static_cast<mask>(_CTYPE_U | _CTYPE_L); > + static const mask digit = static_cast<mask>(_CTYPE_N); > + static const mask xdigit = static_cast<mask>(_CTYPE_N | _CTYPE_X); > + static const mask space = static_cast<mask>(_CTYPE_S); > + static const mask print = static_cast<mask>(_CTYPE_P | _CTYPE_U | > _CTYPE_L | _CTYPE_N | _CTYPE_B); > + static const mask graph = static_cast<mask>(_CTYPE_P | _CTYPE_U | > _CTYPE_L | _CTYPE_N); > + static const mask cntrl = static_cast<mask>(_CTYPE_C); > + static const mask punct = static_cast<mask>(_CTYPE_P); > + static const mask alnum = static_cast<mask>(_CTYPE_U | _CTYPE_L | > _CTYPE_N); > #else > // Older versions use this style. > - 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; > + static const mask upper = static_cast<mask>(_U); > + static const mask lower = static_cast<mask>(_L); > + static const mask alpha = static_cast<mask>(_U | _L); > + static const mask digit = static_cast<mask>(_N); > + static const mask xdigit = static_cast<mask>(_N | _X); > + static const mask space = static_cast<mask>(_S); > + static const mask print = static_cast<mask>(_P | _U | _L | _N | _B); > + static const mask graph = static_cast<mask>(_P | _U | _L | _N); > + static const mask cntrl = static_cast<mask>(_C); > + static const mask punct = static_cast<mask>(_P); > + static const mask alnum = static_cast<mask>(_U | _L | _N); > #endif > #if __cplusplus >= 201103L > static const mask blank = space; > -- > 2.54.0 >
