]> granicus.if.org Git - php/commitdiff
Fixed bug #21689 (fgetcsv suppresses some characters before a separator)
authorMoriyoshi Koizumi <moriyoshi@php.net>
Tue, 18 Feb 2003 15:15:22 +0000 (15:15 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Tue, 18 Feb 2003 15:15:22 +0000 (15:15 +0000)
The fix is suggested by Masahiro Nakayama <masa@sfc.wide.ad.jp>

# is* functions expect their argument to be an integer in range of 0-255

ext/standard/file.c

index 65bd7b8e3d6cb97f6e88b34530d0bdb2fce003e9..fa7649b45c61504401a30f60bf061fe61ad26b73 100644 (file)
@@ -2529,7 +2529,7 @@ PHP_FUNCTION(fgetcsv)
        lineEnd = emalloc(len + 1);
        bptr = buf;
        tptr = buf + strlen(buf) -1;
-       while ( isspace((int) *tptr) && (*tptr!=delimiter) && (tptr > bptr) ) tptr--;
+       while ( isspace((int)*(unsigned char *)tptr) && (*tptr!=delimiter) && (tptr > bptr) ) tptr--;
        tptr++;
        strcpy(lineEnd, tptr);
 
@@ -2551,7 +2551,7 @@ PHP_FUNCTION(fgetcsv)
 
        do {
                /* 1. Strip any leading space */
-               while(isspace((int) *bptr) && (*bptr!=delimiter)) bptr++;
+               while(isspace((int)*(unsigned char *)bptr) && (*bptr!=delimiter)) bptr++;
                /* 2. Read field, leaving bptr pointing at start of next field */
                if (enclosure && *bptr == enclosure) {
                        bptr++; /* move on to first character in field */
@@ -2600,7 +2600,7 @@ PHP_FUNCTION(fgetcsv)
                                                temp = erealloc(temp, temp_len+1);
                                                bptr = buf;
                                                tptr = buf + strlen(buf) -1;
-                                               while (isspace((int) *tptr) && (*tptr!=delimiter) && (tptr > bptr)) 
+                                               while (isspace((int)*(unsigned char *)tptr) && (*tptr!=delimiter) && (tptr > bptr)) 
                                                        tptr--;
                                                tptr++; 
                                                strcpy(lineEnd, tptr);
@@ -2621,7 +2621,7 @@ PHP_FUNCTION(fgetcsv)
 
                        if (strlen(temp)) {
                                tptr--;
-                               while (isspace((int)*tptr) && (*tptr!=delimiter)) 
+                               while (isspace((int)*(unsigned char *)tptr) && (*tptr!=delimiter)) 
                                        *tptr-- = 0;    /* strip any trailing spaces */
                        }