summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-27 09:16:53 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-30 10:47:57 +0200
commitd8d18c3e80b029449240de8b3d970c03674e9617 (patch)
treec696a9d88b7b4f82f5b0c2b820b988f253514c11
parent613a7f90361533fd5310ee836635a1e0864dfa71 (diff)
downloadcygnal-d8d18c3e80b029449240de8b3d970c03674e9617.tar.gz
cygnal-d8d18c3e80b029449240de8b3d970c03674e9617.tar.bz2
cygnal-d8d18c3e80b029449240de8b3d970c03674e9617.zip
ctype: Fix integer type for caseconv_entry::delta
The commit 46ba1675c457324b0eeef4670a09101ef3f34c50 accidently changed a bit-field from signed to unsigned. The caseconv_entry::delta must be a signed integer, see also "newlib/libc/ctype/caseconv.t". Unfortunately, a standard GCC/Newlib build is done without -Wsign-conversion. Using this warning option would have helped to avoid this bug: caseconv.t:2:22: warning: unsigned conversion from 'int' to 'unsigned int:17' changes value from '-32' to '131040' [-Wsign-conversion] {0x0061, 25, TOUP, -32}, Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
-rw-r--r--newlib/libc/ctype/towctrans_l.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/newlib/libc/ctype/towctrans_l.c b/newlib/libc/ctype/towctrans_l.c
index 42085ac78..7b8a23c9c 100644
--- a/newlib/libc/ctype/towctrans_l.c
+++ b/newlib/libc/ctype/towctrans_l.c
@@ -39,7 +39,7 @@ static struct caseconv_entry {
uint_least32_t first: 21;
uint_least8_t diff: 8;
uint_least8_t mode: 2;
- uint_least32_t delta: 17;
+ int_least32_t delta: 17;
} __attribute__ ((packed))
caseconv_table [] = {
#include "caseconv.t"