Merge branch 'PHP-5.4' into PHP-5.5

Conflicts:
	NEWS
This commit is contained in:
Andrey Hristov 2013-01-15 11:06:59 +01:00
commit 22ba2b95ce
4 changed files with 16 additions and 32 deletions

View File

@ -42,7 +42,7 @@ echo '$list = ';var_export($res);echo ";\n";
$fp = fopen($file, "r");
$res = array();
while($l=fgetcsv($fp, 0, ',', '"', '"'))
while($l=fgetcsv($fp))
{
$res[] = join(',',$l);
}
@ -76,10 +76,10 @@ $list = array (
13 => 'aaa,"""bbb """',
14 => '"aaa""aaa""","""bbb""bbb"',
15 => '"aaa""aaa""""""",bbb',
16 => 'aaa,"""\\""bbb",ccc',
17 => '"aaa""\\""a""","""bbb"""',
18 => '"""\\""""","""aaa"""',
19 => '"""\\""""""",aaa',
16 => 'aaa,"""\\"bbb",ccc',
17 => '"aaa""\\"a""","""bbb"""',
18 => '"""\\"""","""aaa"""',
19 => '"""\\"""""",aaa',
);
$list = array (
0 => 'aaa,bbb',

View File

@ -1871,16 +1871,20 @@ PHPAPI int php_fputcsv(php_stream *stream, zval *fields, char delimiter, char en
FPUTCSV_FLD_CHK('\n') ||
FPUTCSV_FLD_CHK('\r') ||
FPUTCSV_FLD_CHK('\t') ||
FPUTCSV_FLD_CHK('\\') ||
FPUTCSV_FLD_CHK(' ')
) {
char *ch = Z_STRVAL(field);
char *end = ch + Z_STRLEN(field);
int escaped = 0;
smart_str_appendc(&csvline, enclosure);
while (ch < end) {
if (*ch == enclosure) {
if (*ch == escape_char) {
escaped = 1;
} else if (!escaped && *ch == enclosure) {
smart_str_appendc(&csvline, enclosure);
} else {
escaped = 0;
}
smart_str_appendc(&csvline, *ch);
ch++;

View File

@ -44,7 +44,7 @@ echo '$list = ';var_export($res);echo ";\n";
$fp = fopen($file, "r");
$res = array();
while($l=fgetcsv($fp, 0, ',', '"', '"'))
while($l=fgetcsv($fp))
{
$res[] = join(',',$l);
}
@ -75,10 +75,10 @@ $list = array (
13 => 'aaa,"""bbb """',
14 => '"aaa""aaa""","""bbb""bbb"',
15 => '"aaa""aaa""""""",bbb',
16 => 'aaa,"""\\""bbb",ccc',
17 => '"aaa""\\""a""","""bbb"""',
18 => '"""\\""""","""aaa"""',
19 => '"""\\""""""",aaa',
16 => 'aaa,"""\\"bbb",ccc',
17 => '"aaa""\\"a""","""bbb"""',
18 => '"""\\"""","""aaa"""',
19 => '"""\\"""""",aaa',
);
$list = array (
0 => 'aaa,bbb',

View File

@ -1,20 +0,0 @@
--TEST--
fputcsv(): bug #43225 (fputcsv incorrectly handles cells ending in \ followed by ")
--FILE--
<?php
$row = array(
'a\\"',
'bbb',
);
$file = dirname(__FILE__) . 'fgetcsv_bug43225.csv';
$fp = fopen($file, 'w');
fputcsv($fp, $row);
fclose($fp);
readfile($file);
unlink($file);
?>
--EXPECT--
"a\""",bbb