From cd632c983e588ca77eafc6e932670c075cbc892c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 4 Jan 2004 04:17:14 +0000 Subject: [PATCH] Fix portability bugs: char values passed to functions must be cast to unsigned char. We have learned this the hard way before. --- src/interfaces/ecpg/compatlib/informix.c | 6 +++--- src/interfaces/ecpg/pgtypeslib/datetime.c | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/interfaces/ecpg/compatlib/informix.c b/src/interfaces/ecpg/compatlib/informix.c index 562ab9282ee..5773c45abee 100644 --- a/src/interfaces/ecpg/compatlib/informix.c +++ b/src/interfaces/ecpg/compatlib/informix.c @@ -464,7 +464,7 @@ rstrdate(char *str, date * d) for (i=0,j=0; i < 10; i++ ) { /* ignore non-digits */ - if ( isdigit(str[i]) ) + if ( isdigit((unsigned char) str[i]) ) { /* j only increments if it is a digit */ @@ -910,8 +910,8 @@ void rupshift(char *str) { for (; *str != '\0'; str++) - if (islower(*str)) - *str = toupper(*str); + if (islower((unsigned char) *str)) + *str = toupper((unsigned char) *str); return; } diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c index 3d5ba1152e3..b4c4a6daa92 100644 --- a/src/interfaces/ecpg/pgtypeslib/datetime.c +++ b/src/interfaces/ecpg/pgtypeslib/datetime.c @@ -405,7 +405,7 @@ PGTYPESdate_defmt_asc(date * d, char *fmt, char *str) reading_digit = 1; for (i = 0; str[i]; i++) { - if (!isdigit(str[i])) + if (!isdigit((unsigned char) str[i])) { reading_digit = 0; break; @@ -495,7 +495,7 @@ PGTYPESdate_defmt_asc(date * d, char *fmt, char *str) /* convert the whole string to lower case */ for (i = 0; str_copy[i]; i++) - str_copy[i] = (char) tolower(str_copy[i]); + str_copy[i] = (char) tolower((unsigned char) str_copy[i]); } /* look for numerical tokens */ @@ -503,14 +503,14 @@ PGTYPESdate_defmt_asc(date * d, char *fmt, char *str) token_count = 0; for (i = 0; i < strlen(str_copy); i++) { - if (!isdigit(str_copy[i]) && reading_digit) + if (!isdigit((unsigned char) str_copy[i]) && reading_digit) { /* the token is finished */ token[token_count][1] = i - 1; reading_digit = 0; token_count++; } - else if (isdigit(str_copy[i]) && !reading_digit) + else if (isdigit((unsigned char) str_copy[i]) && !reading_digit) { /* we have found a token */ token[token_count][0] = i; @@ -565,7 +565,7 @@ PGTYPESdate_defmt_asc(date * d, char *fmt, char *str) { for (j = 0; j < PGTYPES_DATE_MONTH_MAXLENGTH; j++) { - month_lower_tmp[j] = (char) tolower(list[i][j]); + month_lower_tmp[j] = (char) tolower((unsigned char) list[i][j]); if (!month_lower_tmp[j]) { /* properly terminated */