crt: Move private state_mbrlen/state_mbrtowc/state_mbsrtowcs variables to corresponding functions This prevents potential usage of them in incorrect function, as those variables are local just for a function with global state. Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-crt/misc/mbrtowc.c b/mingw-w64-crt/misc/mbrtowc.c index 2d89af5..c2b29f6 100644 --- a/mingw-w64-crt/misc/mbrtowc.c +++ b/mingw-w64-crt/misc/mbrtowc.c
@@ -12,13 +12,6 @@ #include <errno.h> #include <windows.h> -/** - * Private `mbstate_t` to use if caller did not supply one. - */ -static mbstate_t state_mbrlen = {0}; -static mbstate_t state_mbrtowc = {0}; -static mbstate_t state_mbsrtowcs = {0}; - size_t mbrtowc ( wchar_t *__restrict__ wc, const char *__restrict__ mbs, @@ -27,6 +20,7 @@ ) { /* Use private `mbstate_t` if caller did not supply one */ if (state == NULL) { + static mbstate_t state_mbrtowc = {0}; state = &state_mbrtowc; } @@ -140,6 +134,7 @@ ) { /* Use private `mbstate_t` if caller did not supply one */ if (state == NULL) { + static mbstate_t state_mbrlen = {0}; state = &state_mbrlen; } wchar_t wc = WEOF; @@ -154,6 +149,7 @@ ) { /* Use private `mbstate_t` if caller did not supply one */ if (state == NULL) { + static mbstate_t state_mbsrtowcs = {0}; state = &state_mbsrtowcs; }