This simplify header declaration for mbsinit() function.
---
 mingw-w64-crt/Makefile.am         |  1 +
 mingw-w64-crt/misc/mbsinit.c      |  1 -
 mingw-w64-crt/misc/ucrt_mbsinit.c | 14 ++++++++++++++
 mingw-w64-headers/crt/wchar.h     | 10 +---------
 4 files changed, 16 insertions(+), 10 deletions(-)
 create mode 100644 mingw-w64-crt/misc/ucrt_mbsinit.c

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 494fe0f065ee..acf078eeaa0d 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -400,6 +400,7 @@ src_ucrtbase=\
   misc/ucrt__wgetmainargs.c \
   misc/ucrt_amsg_exit.c \
   misc/ucrt_at_quick_exit.c \
+  misc/ucrt_mbsinit.c \
   misc/ucrt_tzset.c \
   math/_huge.c \
   misc/__badioinfo.c \
diff --git a/mingw-w64-crt/misc/mbsinit.c b/mingw-w64-crt/misc/mbsinit.c
index d745402d7d61..a129f5441b23 100644
--- a/mingw-w64-crt/misc/mbsinit.c
+++ b/mingw-w64-crt/misc/mbsinit.c
@@ -15,7 +15,6 @@
 
 */
 
-#define __CRT__NO_INLINE
 #include       <wchar.h>
 
 #if 0
diff --git a/mingw-w64-crt/misc/ucrt_mbsinit.c 
b/mingw-w64-crt/misc/ucrt_mbsinit.c
new file mode 100644
index 000000000000..d653372986a0
--- /dev/null
+++ b/mingw-w64-crt/misc/ucrt_mbsinit.c
@@ -0,0 +1,14 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#undef __MSVCRT_VERSION__
+#define _UCRT
+#include <wchar.h>
+
+int __cdecl mbsinit(const mbstate_t *_P)
+{
+  return (!_P || _P->_Wchar == 0);
+}
diff --git a/mingw-w64-headers/crt/wchar.h b/mingw-w64-headers/crt/wchar.h
index cbe25c7ad6ec..5007968de03f 100644
--- a/mingw-w64-headers/crt/wchar.h
+++ b/mingw-w64-headers/crt/wchar.h
@@ -1153,6 +1153,7 @@ __MINGW_ASM_CALL(__mingw_vsnwprintf);
   typedef wchar_t _Wint_t;
 
   wint_t __cdecl btowc(int);
+  int __cdecl mbsinit(const mbstate_t *ps);
   size_t __cdecl mbrlen(const char * __restrict__ _Ch,size_t 
_SizeInBytes,mbstate_t * __restrict__ _State);
   size_t __cdecl mbrtowc(wchar_t * __restrict__ _DstCh,const char * 
__restrict__ _SrcCh,size_t _SizeInBytes,mbstate_t * __restrict__ _State);
   size_t __cdecl mbsrtowcs(wchar_t * __restrict__ _Dest,const char ** 
__restrict__ _PSrc,size_t _Count,mbstate_t * __restrict__ _State) 
__MINGW_ATTRIB_DEPRECATED_SEC_WARN;
@@ -1168,12 +1169,6 @@ __MINGW_ASM_CALL(__mingw_vsnwprintf);
   wchar_t * __cdecl wmempcpy (wchar_t *_Dst, const wchar_t *_Src, size_t 
_Size);
   wchar_t *__cdecl wmemmove(wchar_t *s1, const wchar_t *s2, size_t n) 
__MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   int __cdecl fwide(FILE *stream,int mode);
-#if defined(_UCRT) || defined(__LARGE_MBSTATE_T)
-  /* With UCRT, mbsinit is only available as inline. */
-  __mingw_ovr int __cdecl mbsinit(const mbstate_t *_P) { return (!_P || 
_P->_Wchar == 0); }
-#else
-  int __cdecl mbsinit(const mbstate_t *ps);
-#endif
   __MINGW_EXTENSION long long __cdecl wcstoll(const wchar_t * __restrict__ 
nptr,wchar_t ** __restrict__ endptr, int base);
   __MINGW_EXTENSION unsigned long long __cdecl wcstoull(const wchar_t * 
__restrict__ nptr,wchar_t ** __restrict__ endptr, int base);
 #endif /* __NO_ISOCEXT */
@@ -1182,9 +1177,6 @@ __MINGW_ASM_CALL(__mingw_vsnwprintf);
   void *__cdecl memcpy(void * __restrict__ _Dst,const void * __restrict__ 
_Src,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 #ifndef __CRT__NO_INLINE
   __CRT_INLINE int __cdecl fwide(FILE *_F,int _M) { (void)_F; return (_M); }
-#if !defined(_UCRT) && !defined(__LARGE_MBSTATE_T)
-  __CRT_INLINE int __cdecl mbsinit(const mbstate_t *_P) { return (!_P || 
*_P==0); }
-#endif
   __CRT_INLINE _CONST_RETURN wchar_t *__cdecl wmemchr(const wchar_t 
*_S,wchar_t _C,size_t _N) {
     if (_S) {
       for ( ; 0 < _N; ++_S, --_N)
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to