]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.6'
authorJulien Pauli <jpauli@php.net>
Fri, 5 Dec 2014 09:14:35 +0000 (10:14 +0100)
committerJulien Pauli <jpauli@php.net>
Fri, 5 Dec 2014 09:18:22 +0000 (10:18 +0100)
* PHP-5.6:
  Updated NEWS
  Updated NEWS
  Fixed #68479 - Added escape parameter to SplFileObject::fputcsv

Conflicts:
ext/spl/spl_directory.c

1  2 
ext/spl/spl_directory.c
ext/spl/tests/bug68479.phpt

index 375d52bad952c5f8ea836be4d851e144aed94d8f,8e04de7ce9cc9d7d7bb27fb3b28a924f26f466c9..8da1d1165f816197c1f1fccc9495090e725e85e8
@@@ -2621,16 -2647,22 +2621,23 @@@ SPL_METHOD(SplFileObject, fgetcsv
     Output a field array as a CSV line */
  SPL_METHOD(SplFileObject, fputcsv)
  {
 -      spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
 +      spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis());
        char delimiter = intern->u.file.delimiter, enclosure = intern->u.file.enclosure, escape = intern->u.file.escape;
-       char *delim = NULL, *enclo = NULL;
-       size_t d_len = 0, e_len = 0;
+       char *delim = NULL, *enclo = NULL, *esc = NULL;
 -      int d_len = 0, e_len = 0, esc_len = 0, ret;
++      size_t d_len = 0, e_len = 0, esc_len = 0;
 +      zend_long ret;
        zval *fields = NULL;
        
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|ss", &fields, &delim, &d_len, &enclo, &e_len) == SUCCESS) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|sss", &fields, &delim, &d_len, &enclo, &e_len, &esc, &esc_len) == SUCCESS) {
                switch(ZEND_NUM_ARGS())
                {
+               case 4:
+                       if (esc_len != 1) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "escape must be a character");
+                               RETURN_FALSE;
+                       }
+                       escape = esc[0];
+                       /* no break */
                case 3:
                        if (e_len != 1) {
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, "enclosure must be a character");
index 0000000000000000000000000000000000000000,1782a9cef2c2046002c6da1b019cd81eee21de57..e4e7976a9bf371e6b47a3603e0d8eac8bd0dda7f
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,35 +1,35 @@@
 -  &object(ReflectionParameter)#2 (1) {
+ --TEST--
+ Bug #68479 (Escape parameter missing from SplFileObject::fputcsv)
+ --FILE--
+ <?php
+ $method = new ReflectionMethod('SplFileObject', 'fputcsv');
+ $params = $method->getParameters(); 
+ var_dump($params);
+ ?>
+ ===DONE===
+ --EXPECTF--
+ array(4) {
+   [0]=>
 -  &object(ReflectionParameter)#3 (1) {
++  object(ReflectionParameter)#2 (1) {
+     ["name"]=>
+     string(6) "fields"
+   }
+   [1]=>
 -  &object(ReflectionParameter)#4 (1) {
++  object(ReflectionParameter)#3 (1) {
+     ["name"]=>
+     string(9) "delimiter"
+   }
+   [2]=>
 -  &object(ReflectionParameter)#5 (1) {
++  object(ReflectionParameter)#4 (1) {
+     ["name"]=>
+     string(9) "enclosure"
+   }
+   [3]=>
 -===DONE===
++  object(ReflectionParameter)#5 (1) {
+     ["name"]=>
+     string(6) "escape"
+   }
+ }
++===DONE===