aboutsummaryrefslogtreecommitdiffstats
path: root/include/bits
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2015-08-31 02:52:08 +0200
committerMattias Andrée <maandree@operamail.com>2015-08-31 02:52:51 +0200
commite667c2090d83a267d1bba7c28650dd8fc75ae826 (patch)
treebf9814f3be54c9c13d9e6c967b907ec1a6c404c2 /include/bits
parentwchar_t and wint_t not safe for marshalling (diff)
downloadslibc-e667c2090d83a267d1bba7c28650dd8fc75ae826.tar.gz
slibc-e667c2090d83a267d1bba7c28650dd8fc75ae826.tar.bz2
slibc-e667c2090d83a267d1bba7c28650dd8fc75ae826.tar.xz
wint_t and wchar_t are not portable, additionally they are not guaranteed to be defined as expected and thus should not be used
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'include/bits')
-rw-r--r--include/bits/types.h21
1 files changed, 13 insertions, 8 deletions
diff --git a/include/bits/types.h b/include/bits/types.h
index ef64df2..58c6064 100644
--- a/include/bits/types.h
+++ b/include/bits/types.h
@@ -19,6 +19,7 @@
* headers to be able to define types by including this
* header without the need of keeping in mind which
* order headers are included. */
+#include <slibc/features.h>
#include <bits/intconf.h>
@@ -53,6 +54,7 @@ typedef unsigned long int uptrdiff_t;
#endif
+#ifndef _PORTABLE_SOURCE
/**
* Integer type which can represent any character.
* May not be greater than the with of type long.
@@ -69,11 +71,12 @@ typedef unsigned long int uptrdiff_t;
* libc implementation, the version of the libc implementation,
* and the microarchitecture.
*/
-#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
-# define __DEFINED_wchar_t
-typedef long int wchar_t;
-# define __WCHAR_MAX INTPTR_MAX
-#endif
+# if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
+# define __DEFINED_wchar_t
+typedef long int wchar_t
+ __warning("'wchar_t' is not guaranteed to be defined as expected, use 'int32_t'.");
+# define __WCHAR_MAX INTPTR_MAX
+# endif
/**
@@ -84,9 +87,11 @@ typedef long int wchar_t;
* libc implementation, the version of the libc implementation,
* and the microarchitecture.
*/
-#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
-# define __DEFINED_wint_t
-typedef wchar_t wint_t;
+# if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
+# define __DEFINED_wint_t
+typedef wchar_t wint_t
+ __warning("'wint_t' is not guaranteed to be defined as expected, use 'int32_t'.");
+# endif
#endif