diff --git a/libc/include/limits.h b/libc/include/limits.h index a70021a07..dc4590299 100644 --- a/libc/include/limits.h +++ b/libc/include/limits.h @@ -112,7 +112,7 @@ #define SSIZE_MAX LONG_MAX -#define MB_LEN_MAX 1 /* No multibyte characters. */ +#define MB_LEN_MAX 6 /* New code should use sysconf(_SC_PAGE_SIZE) instead. */ #ifndef PAGE_SIZE diff --git a/libc/include/wchar.h b/libc/include/wchar.h index 0029a65be..6251868da 100644 --- a/libc/include/wchar.h +++ b/libc/include/wchar.h @@ -39,8 +39,15 @@ __BEGIN_DECLS -typedef __WINT_TYPE__ wint_t; -typedef struct { int dummy; } mbstate_t; +typedef __WINT_TYPE__ wint_t; +typedef struct { +#ifdef __LP32__ + int dummy; +#else + // 8 bytes should be enough to support at least UTF-8 + char __reserved[8]; +#endif +} mbstate_t; typedef enum { WC_TYPE_INVALID = 0,