[newlib-cygwin/main] Cygwin: uchar.h: fix definition of uchar16_t and uchar32_t

Corinna Vinschen corinna@sourceware.org
Wed Aug 2 15:04:04 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=8fbbc668a01db50c3735d396f6e021940f7b3834

commit 8fbbc668a01db50c3735d396f6e021940f7b3834
Author:     Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Wed Aug 2 16:50:23 2023 +0200
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Wed Aug 2 16:56:24 2023 +0200

    Cygwin: uchar.h: fix definition of uchar16_t and uchar32_t
    
    Per C++11, uchar16_t and uchar32_t are defined the same as
    uint_least16_t and uint_least32_t.  Also, check for the C++
    version to make sure that the types are not colliding with
    predefined c++ types.
    
    Fixes: 4f258c55e87f ("Cygwin: Add ISO C11 functions c16rtomb, c32rtomb, mbrtoc16, mbrtoc32.")
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/include/uchar.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/winsup/cygwin/include/uchar.h b/winsup/cygwin/include/uchar.h
index 84020553700d..bf865ff16e7f 100644
--- a/winsup/cygwin/include/uchar.h
+++ b/winsup/cygwin/include/uchar.h
@@ -6,6 +6,11 @@
 
 typedef	__uint16_t	char16_t;
 typedef	__uint32_t	char32_t;
+/* C++11 already defines those types. */
+#if !defined (__cplusplus) || (__cplusplus - 0 < 201103L)
+typedef	__uint_least16_t	char16_t;
+typedef	__uint_least32_t	char32_t;
+#endif
 
 __BEGIN_DECLS


More information about the Cygwin-cvs mailing list