[PATCH] ctype: Fix bitfield types on 16-bit targets

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
This prevents errors like this:

newlib/libc/ctype/categories.c:6:3: error: width of 'first' exceeds its type
   unsigned int first: 24;
   ^

Signed-off-by: Sebastian Huber <[email protected]>
---
 newlib/libc/ctype/categories.c  | 5 +++--
 newlib/libc/ctype/towctrans_l.c | 9 +++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/newlib/libc/ctype/categories.c b/newlib/libc/ctype/categories.c
index c237324ec..85328ef2e 100644
--- a/newlib/libc/ctype/categories.c
+++ b/newlib/libc/ctype/categories.c
@@ -1,10 +1,11 @@
 #include <wctype.h>
+#include <stdint.h>
 #include "categories.h"
 
 struct _category {
   enum category cat: 8;
-  unsigned int first: 24;
-  unsigned short delta;
+  uint_least32_t first: 24;
+  uint_least16_t delta;
 } __attribute__((packed));
 
 static const struct _category categories[] = {
diff --git a/newlib/libc/ctype/towctrans_l.c b/newlib/libc/ctype/towctrans_l.c
index 9759cf7bc..42085ac78 100644
--- a/newlib/libc/ctype/towctrans_l.c
+++ b/newlib/libc/ctype/towctrans_l.c
@@ -1,6 +1,7 @@
 /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */
 #include <_ansi.h>
 #include <wctype.h>
+#include <stdint.h>
 //#include <errno.h>
 #include "local.h"
 
@@ -35,10 +36,10 @@
 enum {TO1, TOLO, TOUP, TOBOTH};
 enum {EVENCAP, ODDCAP};
 static struct caseconv_entry {
-  unsigned int first: 21;
-  unsigned short diff: 8;
-  unsigned char mode: 2;
-  int delta: 17;
+  uint_least32_t first: 21;
+  uint_least8_t diff: 8;
+  uint_least8_t mode: 2;
+  uint_least32_t delta: 17;
 } __attribute__ ((packed))
 caseconv_table [] = {
 #include "caseconv.t"
-- 
2.13.7
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.