scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit 8a590d4b21a22baaacf934ece3f0372e6b72faba
parent 3cb21279e81fde0e4dc9b10061b9aa2ecd7225b5
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Sun,  6 Nov 2022 20:26:11 +0100

libc: Protect definitions of MB_CUR_MAX

MB_CUR_MAX is defined in limits.h and stdlib.h and it
implies that the inclusion guards cannot protect
against multiple definitions of it.

Diffstat:
Minclude/limits.h | 2++
Minclude/stdlib.h | 3+++
Asrc/libc/wchar/_validutf8.c | 15+++++++++++++++
3 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/include/limits.h b/include/limits.h @@ -3,6 +3,8 @@ #include <arch/limits.h> +#ifndef MB_LEN_MAX #define MB_LEN_MAX 4 +#endif #endif diff --git a/include/stdlib.h b/include/stdlib.h @@ -11,7 +11,10 @@ #define _ATEXIT_MAX 32 +#ifndef MB_CUR_MAX #define MB_CUR_MAX 4 +#endif + #define RAND_MAX 32767 typedef struct { diff --git a/src/libc/wchar/_validutf8.c b/src/libc/wchar/_validutf8.c @@ -0,0 +1,15 @@ +#include <wchar.h> + +#include "../libc.h" + +int +_validutf8(wchar_t wc) +{ + if (wc >= 0xD800 && wc < 0xDBFF) + return 0; + if (wc >= 0xDC00 && wc < 0xDCFF) + return 0; + if (wc > 0x10FFFF) + return 0; + return 1; +}