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;
}