From c4dd0c98bae8e3583f68ba5b30db491055ab2322 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 22 Jul 2013 13:05:41 -0400 Subject: [PATCH] change wint_t to unsigned aside from the obvious C++ ABI purpose for this change, it also brings musl into alignment with the compiler's idea of the definition of wint_t (use in -Wformat), and makes the situation less awkward on ARM, where wchar_t is unsigned. internal code using wint_t and WEOF was checked against this change, and while a few cases of storing WEOF into wchar_t were found, they all seem to operate properly with the natural conversion from unsigned to signed. --- arch/arm/bits/alltypes.h.in | 2 +- arch/i386/bits/alltypes.h.in | 2 +- arch/microblaze/bits/alltypes.h.in | 2 +- arch/mips/bits/alltypes.h.in | 2 +- arch/powerpc/bits/alltypes.h.in | 2 +- arch/x86_64/bits/alltypes.h.in | 2 +- include/stdint.h | 4 ++-- include/wchar.h | 2 +- include/wctype.h | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/arm/bits/alltypes.h.in b/arch/arm/bits/alltypes.h.in index c3228b55..764a2469 100644 --- a/arch/arm/bits/alltypes.h.in +++ b/arch/arm/bits/alltypes.h.in @@ -7,7 +7,7 @@ TYPEDEF __builtin_va_list __isoc_va_list; #ifndef __cplusplus TYPEDEF unsigned wchar_t; #endif -TYPEDEF int wint_t; +TYPEDEF unsigned wint_t; TYPEDEF float float_t; TYPEDEF double double_t; diff --git a/arch/i386/bits/alltypes.h.in b/arch/i386/bits/alltypes.h.in index ea6471ed..04fd1cb4 100644 --- a/arch/i386/bits/alltypes.h.in +++ b/arch/i386/bits/alltypes.h.in @@ -16,7 +16,7 @@ TYPEDEF __WCHAR_TYPE__ wchar_t; TYPEDEF long wchar_t; #endif #endif -TYPEDEF long wint_t; +TYPEDEF unsigned wint_t; #if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 0 TYPEDEF float float_t; diff --git a/arch/microblaze/bits/alltypes.h.in b/arch/microblaze/bits/alltypes.h.in index f0ab35fa..eb842aaf 100644 --- a/arch/microblaze/bits/alltypes.h.in +++ b/arch/microblaze/bits/alltypes.h.in @@ -7,7 +7,7 @@ TYPEDEF __builtin_va_list __isoc_va_list; #ifndef __cplusplus TYPEDEF int wchar_t; #endif -TYPEDEF int wint_t; +TYPEDEF unsigned wint_t; TYPEDEF float float_t; TYPEDEF double double_t; diff --git a/arch/mips/bits/alltypes.h.in b/arch/mips/bits/alltypes.h.in index f0ab35fa..eb842aaf 100644 --- a/arch/mips/bits/alltypes.h.in +++ b/arch/mips/bits/alltypes.h.in @@ -7,7 +7,7 @@ TYPEDEF __builtin_va_list __isoc_va_list; #ifndef __cplusplus TYPEDEF int wchar_t; #endif -TYPEDEF int wint_t; +TYPEDEF unsigned wint_t; TYPEDEF float float_t; TYPEDEF double double_t; diff --git a/arch/powerpc/bits/alltypes.h.in b/arch/powerpc/bits/alltypes.h.in index 928ce70b..1c3fe283 100644 --- a/arch/powerpc/bits/alltypes.h.in +++ b/arch/powerpc/bits/alltypes.h.in @@ -7,7 +7,7 @@ TYPEDEF __builtin_va_list __isoc_va_list; #ifndef __cplusplus TYPEDEF long wchar_t; #endif -TYPEDEF int wint_t; +TYPEDEF unsigned wint_t; TYPEDEF float float_t; TYPEDEF double double_t; diff --git a/arch/x86_64/bits/alltypes.h.in b/arch/x86_64/bits/alltypes.h.in index e931d114..b9bff866 100644 --- a/arch/x86_64/bits/alltypes.h.in +++ b/arch/x86_64/bits/alltypes.h.in @@ -7,7 +7,7 @@ TYPEDEF __builtin_va_list __isoc_va_list; #ifndef __cplusplus TYPEDEF int wchar_t; #endif -TYPEDEF int wint_t; +TYPEDEF unsigned wint_t; #if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2 TYPEDEF long double float_t; diff --git a/include/stdint.h b/include/stdint.h index a783ad96..ad6aaead 100644 --- a/include/stdint.h +++ b/include/stdint.h @@ -78,8 +78,8 @@ typedef uint64_t uint_least64_t; #define INTMAX_MAX INT64_MAX #define UINTMAX_MAX UINT64_MAX -#define WINT_MIN INT32_MIN -#define WINT_MAX INT32_MAX +#define WINT_MIN 0 +#define WINT_MAX UINT32_MAX #if L'\0'-1 > 0 #define WCHAR_MAX (0xffffffffu+L'\0') diff --git a/include/wchar.h b/include/wchar.h index a6742e37..96cd4447 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -36,7 +36,7 @@ extern "C" { #define NULL 0L #undef WEOF -#define WEOF (-1) +#define WEOF 0xffffffffU typedef struct __mbstate_t { diff --git a/include/wctype.h b/include/wctype.h index 5640eddb..8c544f24 100644 --- a/include/wctype.h +++ b/include/wctype.h @@ -20,7 +20,7 @@ extern "C" { typedef const int * wctrans_t; #undef WEOF -#define WEOF (-1) +#define WEOF 0xffffffffU #undef iswdigit -- 2.25.1