]> granicus.if.org Git - php/commitdiff
Fix fgetcsv() to reflect the change on 4.3.5 behaviour.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Sun, 18 Jan 2004 20:29:34 +0000 (20:29 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Sun, 18 Jan 2004 20:29:34 +0000 (20:29 +0000)
ext/standard/file.c

index f2982c388ca3a86060c09fa28db75d607e625891..88531681829942fdc3c08e3d523dfdf03fc38fbb 100644 (file)
@@ -1904,6 +1904,7 @@ PHP_FUNCTION(fgetcsv)
                                                                        /* real enclosure */
                                                                        memcpy(tptr, hunk_begin, bptr - hunk_begin - 1);
                                                                        tptr += (bptr - hunk_begin - 1);
+                                                                       hunk_begin = bptr;
                                                                        goto quit_loop_2;
                                                                }
                                                                memcpy(tptr, hunk_begin, bptr - hunk_begin);
@@ -1929,6 +1930,7 @@ PHP_FUNCTION(fgetcsv)
                                                                /* real enclosure */
                                                                memcpy(tptr, hunk_begin, bptr - hunk_begin - 1);
                                                                tptr += (bptr - hunk_begin - 1);
+                                                               hunk_begin = bptr;
                                                                goto quit_loop_2;
                                                        case 1:
                                                                bptr += inc_len;
@@ -1959,7 +1961,6 @@ PHP_FUNCTION(fgetcsv)
                                                /* break is omitted intentionally */
                                        case 1:
                                                if (*bptr == delimiter) {
-                                                       bptr += inc_len;
                                                        goto quit_loop_3;
                                                }
                                                break;
@@ -1971,6 +1972,9 @@ PHP_FUNCTION(fgetcsv)
                        }
 
                quit_loop_3:
+                       memcpy(tptr, hunk_begin, bptr - hunk_begin);
+                       tptr += (bptr - hunk_begin);
+                       bptr += inc_len;
                        comp_end = tptr;
                } else {
                        /* 2B. Handle non-enclosure field */