summaryrefslogtreecommitdiff
path: root/ext/standard/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/file.c')
-rw-r--r--ext/standard/file.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/ext/standard/file.c b/ext/standard/file.c
index c17af315c4..8fa933096a 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -2196,30 +2196,17 @@ PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char
char *comp_end, *hunk_begin;
tptr = temp;
-
- /* 1. Strip any leading space */
- for (;;) {
- inc_len = (bptr < limit ? (*bptr == '\0' ? 1: php_mblen(bptr, limit - bptr)): 0);
- switch (inc_len) {
- case -2:
- case -1:
- inc_len = 1;
- php_mblen(NULL, 0);
- break;
- case 0:
- goto quit_loop_1;
- case 1:
- if (!isspace((int)*(unsigned char *)bptr) || *bptr == delimiter) {
- goto quit_loop_1;
- }
- break;
- default:
- goto quit_loop_1;
+ inc_len = (bptr < limit ? (*bptr == '\0' ? 1: php_mblen(bptr, limit - bptr)): 0);
+ if (inc_len == 1) {
+ char *tmp = bptr;
+ while (isspace((int)*(unsigned char *)tmp)) {
+ tmp++;
+ }
+ if (*tmp == enclosure) {
+ bptr = tmp;
}
- bptr += inc_len;
}
- quit_loop_1:
if (first_field && bptr == line_end) {
add_next_index_null(return_value);
break;