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