From 34ef0a01f0e1d620dac17d35832449b6880641b0 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 13 Oct 2010 20:35:50 -0700 Subject: [PATCH] sort: fix unportable cast of unsigned char * -> char * * src/sort.c (fold_toupper): Change this back from char to unsigned char, fixing a portability issue introduced in commit 59e2e55d0f154a388adc9bac37d2b45f2ba971f8 dated February 26, as the C Standard doesn't let you convert from unsigned char * to char * without a cast, and the (in theory more portable) style here is to convert char values, not pointer values. (getmonth): Convert char to unsigned char when needed for comparison. --- src/sort.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sort.c b/src/sort.c index 89f7be32c8..c155edadbc 100644 --- a/src/sort.c +++ b/src/sort.c @@ -268,7 +268,7 @@ static bool nonprinting[UCHAR_LIM]; static bool nondictionary[UCHAR_LIM]; /* Translation table folding lower case to upper. */ -static unsigned char fold_toupper[UCHAR_LIM]; +static char fold_toupper[UCHAR_LIM]; #define MONTHS_PER_YEAR 12 @@ -1952,12 +1952,12 @@ getmonth (char const *month, char **ea) *ea = (char *) m; return monthtab[ix].val; } - if (fold_toupper[to_uchar (*m)] < to_uchar (*n)) + if (to_uchar (fold_toupper[to_uchar (*m)]) < to_uchar (*n)) { hi = ix; break; } - else if (fold_toupper[to_uchar (*m)] > to_uchar (*n)) + else if (to_uchar (fold_toupper[to_uchar (*m)]) > to_uchar (*n)) { lo = ix + 1; break; -- 2.47.2