summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2011-09-13 12:44:13 +0000
committerXinchen Hui <laruence@php.net>2011-09-13 12:44:13 +0000
commit84c94e29c9bb7c3b27d7b4fb41c599fb774f4faf (patch)
tree51badb9cee263ff967c9a9b81deae2127895b7d0
parent3996135f685ed360891a56b165ba0e2fd3820eb6 (diff)
downloadphp-git-84c94e29c9bb7c3b27d7b4fb41c599fb774f4faf.tar.gz
Fixed Bug #55674 (fgetcsv & str_getcsv skip empty fields in some tab-separated records) which was introduced by r311543
-rw-r--r--ext/standard/file.c2
-rw-r--r--ext/standard/tests/strings/bug55674.phpt50
2 files changed, 51 insertions, 1 deletions
diff --git a/ext/standard/file.c b/ext/standard/file.c
index 3ef8980f24..4240e74e81 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -2051,7 +2051,7 @@ PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char
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)) {
+ while ((*tmp != delimiter) && isspace((int)*(unsigned char *)tmp)) {
tmp++;
}
if (*tmp == enclosure) {
diff --git a/ext/standard/tests/strings/bug55674.phpt b/ext/standard/tests/strings/bug55674.phpt
new file mode 100644
index 0000000000..72ece642a7
--- /dev/null
+++ b/ext/standard/tests/strings/bug55674.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Bug #55674 (fgetcsv & str_getcsv skip empty fields in some tab-separated records)
+--FILE--
+<?php
+var_dump(str_getcsv("0\t\t\"2\"\n", "\t"));
+var_dump(str_getcsv("0\t \t'2'\n", "\t", "'"));
+var_dump(str_getcsv(",,,,"));
+var_dump(str_getcsv(" \t \t\t\t ", "\t"));
+?>
+--EXPECT--
+array(3) {
+ [0]=>
+ string(1) "0"
+ [1]=>
+ string(0) ""
+ [2]=>
+ string(1) "2"
+}
+array(3) {
+ [0]=>
+ string(1) "0"
+ [1]=>
+ string(1) " "
+ [2]=>
+ string(1) "2"
+}
+array(5) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ string(0) ""
+ [2]=>
+ string(0) ""
+ [3]=>
+ string(0) ""
+ [4]=>
+ string(0) ""
+}
+array(5) {
+ [0]=>
+ string(1) " "
+ [1]=>
+ string(2) " "
+ [2]=>
+ string(0) ""
+ [3]=>
+ string(0) ""
+ [4]=>
+ string(1) " "
+}