Function mbsrtowcs() does not access bytes of mbstate_t, so define
conversion_state directly of mbstate_t type instead of unused union.
---
 mingw-w64-crt/misc/mbsrtowcs.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/mingw-w64-crt/misc/mbsrtowcs.c b/mingw-w64-crt/misc/mbsrtowcs.c
index 2e6367201a7e..e7e4105bb1fe 100644
--- a/mingw-w64-crt/misc/mbsrtowcs.c
+++ b/mingw-w64-crt/misc/mbsrtowcs.c
@@ -19,11 +19,7 @@ size_t mbsrtowcs (
     state = &state_mbsrtowcs;
   }
 
-  /* Treat `state` as array of bytes */
-  union {
-    mbstate_t state;
-    char bytes[4];
-  } conversion_state = {.state = *state};
+  mbstate_t conversion_state = *state;
 
   /* Total number of wide character written to `wcs` */
   size_t  wcConverted = 0;
@@ -38,14 +34,14 @@ size_t mbsrtowcs (
 
   while (1) {
     const size_t length = mbrtowc (
-      &wc, mbc, mb_cur_max, &conversion_state.state
+      &wc, mbc, mb_cur_max, &conversion_state
     );
 
     /* Conversion failed */
     if (length == (size_t) -1) {
       if (wcs != NULL) {
         *mbs = mbc;
-        *state = conversion_state.state;
+        *state = conversion_state;
       }
       return (size_t) -1;
     }
@@ -81,7 +77,7 @@ size_t mbsrtowcs (
   }
 
   if (wcs != NULL) {
-    *state = conversion_state.state;
+    *state = conversion_state;
   }
 
   return wcConverted;
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to