]> granicus.if.org Git - php/commitdiff
Fix #72646: SplFileObject::getCsvControl does not return the escape character
authorChristoph M. Becker <cmb@php.net>
Fri, 22 Jul 2016 12:55:13 +0000 (14:55 +0200)
committerChristoph M. Becker <cmb@php.net>
Fri, 22 Jul 2016 13:24:50 +0000 (15:24 +0200)
This has obviously been missed when adding the $escape parameter to
SplFileObject::setCsvControl() in PHP 5.3, so we catch up on this.

NEWS
ext/spl/spl_directory.c
ext/spl/tests/SplFileObject_getCsvControl_basic_001.phpt

diff --git a/NEWS b/NEWS
index c2cae0af647921649b8683a6c8fe481867880447..f04f36b38f4b327c3d5db23344da2ce577885cea 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -50,6 +50,8 @@ PHP                                                                        NEWS
 
 - SPL:
   . Fixed bug #72122 (IteratorIterator breaks '@' error suppression). (kinglozzer)
+  . Fixed bug #72646 (SplFileObject::getCsvControl does not return the escape
+    character). (cmb)
 
 21 Jul 2016, PHP 5.6.24
 
index 8613c9302c6c1cdfb467de63be7e25143cc04a00..c08334573e2d68b2d512ee215429f99ee1bf8e2d 100644 (file)
@@ -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);
 }
 /* }}} */
 
index e21f08fa2de74c094cf561245c6f5023232f420e..4e3de4bab2eb2237c0b2fb4b6d330f659ffcbf31 100644 (file)
@@ -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) "\"
 }