summaryrefslogtreecommitdiff
path: root/ext/spl
diff options
context:
space:
mode:
authorChristoph M. Becker <cmb@php.net>2016-07-22 14:55:13 +0200
committerChristoph M. Becker <cmb@php.net>2016-07-22 15:24:50 +0200
commit6b116932b28b76c3f075921a0f2660f7bf5ac4e1 (patch)
treec1d1f6c170236d4a9d93cf6b270b3ed31e4570c6 /ext/spl
parentfb4a6dc0f1df106dae84c9d8f3ec53cc0da7231b (diff)
downloadphp-git-6b116932b28b76c3f075921a0f2660f7bf5ac4e1.tar.gz
Fix #72646: SplFileObject::getCsvControl does not return the escape character
This has obviously been missed when adding the $escape parameter to SplFileObject::setCsvControl() in PHP 5.3, so we catch up on this.
Diffstat (limited to 'ext/spl')
-rw-r--r--ext/spl/spl_directory.c9
-rw-r--r--ext/spl/tests/SplFileObject_getCsvControl_basic_001.phpt10
2 files changed, 12 insertions, 7 deletions
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index 8613c9302c..c08334573e 100644
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -2692,7 +2692,7 @@ SPL_METHOD(SplFileObject, fputcsv)
/* }}} */
/* {{{ proto void SplFileObject::setCsvControl([string delimiter = ',' [, string enclosure = '"' [, string escape = '\\']]])
- Set the delimiter and enclosure character used in fgetcsv */
+ Set the delimiter, enclosure and escape character used in fgetcsv */
SPL_METHOD(SplFileObject, setCsvControl)
{
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
@@ -2735,11 +2735,11 @@ SPL_METHOD(SplFileObject, setCsvControl)
/* }}} */
/* {{{ proto array SplFileObject::getCsvControl()
- Get the delimiter and enclosure character used in fgetcsv */
+ Get the delimiter, enclosure and escape character used in fgetcsv */
SPL_METHOD(SplFileObject, getCsvControl)
{
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
- char delimiter[2], enclosure[2];
+ char delimiter[2], enclosure[2], escape[2];
array_init(return_value);
@@ -2747,9 +2747,12 @@ SPL_METHOD(SplFileObject, getCsvControl)
delimiter[1] = '\0';
enclosure[0] = intern->u.file.enclosure;
enclosure[1] = '\0';
+ escape[0] = intern->u.file.escape;
+ escape[1] = '\0';
add_next_index_string(return_value, delimiter, 1);
add_next_index_string(return_value, enclosure, 1);
+ add_next_index_string(return_value, escape, 1);
}
/* }}} */
diff --git a/ext/spl/tests/SplFileObject_getCsvControl_basic_001.phpt b/ext/spl/tests/SplFileObject_getCsvControl_basic_001.phpt
index e21f08fa2d..4e3de4bab2 100644
--- a/ext/spl/tests/SplFileObject_getCsvControl_basic_001.phpt
+++ b/ext/spl/tests/SplFileObject_getCsvControl_basic_001.phpt
@@ -6,10 +6,12 @@ $obj = New SplFileObject(dirname(__FILE__).'/SplFileObject_testinput.csv');
var_dump($obj->getCsvControl());
?>
---EXPECTF--
-array(2) {
+--EXPECT--
+array(3) {
[0]=>
- %unicode|string%(1) ","
+ string(1) ","
[1]=>
- %unicode|string%(1) """
+ string(1) """
+ [2]=>
+ string(1) "\"
}