Fix portability bugs: char values passed to functions must
authorTom Lane
Sun, 4 Jan 2004 04:17:01 +0000 (04:17 +0000)
committerTom Lane
Sun, 4 Jan 2004 04:17:01 +0000 (04:17 +0000)
be cast to unsigned char.  We have learned this the hard way before.

src/interfaces/ecpg/compatlib/informix.c
src/interfaces/ecpg/pgtypeslib/datetime.c

index 562ab9282ee0895cfb31cdd03ff217dff0465d40..5773c45abee9e06b452c10fa6d8f886c186a2b3b 100644 (file)
@@ -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;
 }
 
index 3d5ba1152e32f816d68607141f29512531dd675d..b4c4a6daa92721ff30488a613ba64077e32a5e12 100644 (file)
@@ -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 */