cvs: php-src /ext/standard file.c
| From: | Felipe Pena | Date: | Sun, 10 Feb 2008 04:09:12 +0000 |
| Subject: | cvs: php-src /ext/standard file.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-48426@lists.php.net to get a copy of this message | ||
felipe Sun Feb 10 04:09:12 2008 UTC
Modified files:
/php-src/ext/standard file.c
Log:
Fixed Bug #42229 (fgetcsv() behaves differently for a file containing '\n' with php5 and
php6)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/file.c?r1=1.509&r2=1.510&diff_format=u
Index: php-src/ext/standard/file.c
diff -u php-src/ext/standard/file.c:1.509 php-src/ext/standard/file.c:1.510
--- php-src/ext/standard/file.c:1.509 Sun Feb 10 02:13:37 2008
+++ php-src/ext/standard/file.c Sun Feb 10 04:09:12 2008
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.509 2008/02/10 02:13:37 felipe Exp $ */
+/* $Id: file.c,v 1.510 2008/02/10 04:09:12 felipe Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -2359,6 +2359,11 @@
if (p >= e) break;
goto ready_state;
}
+
+ /* Otherwise, starting a new field without enclosures */
+ state = PHP_FGETCSV_FIELD_NO_ENC;
+ field_start = p++;
+ field_end = NULL;
/* Is it an escape character? */
if ((PHP_FGETCSV_BIN_CHECK(p, e, escape, escape_len) && escape != enclosure) ||
@@ -2368,15 +2373,9 @@
/* Skip escape sequence and let next char be treated as literal
* If enclosure is the same character as esacpe, it is considered as esacped
* if it appears twice */
- p += escape_len;
+ p += escape_len - 1;
/* FALL THROUGH */
}
-
- /* Otherwise, starting a new field without enclosures */
- state = PHP_FGETCSV_FIELD_NO_ENC;
- field_start = p;
- field_end = NULL;
- p++;
break;
case PHP_FGETCSV_FIELD_WITH_ENC:
@@ -2568,6 +2567,11 @@
if (p >= e) break;
goto ready_state;
}
+
+ /* Otherwise, starting a new field without enclosures */
+ state = PHP_FGETCSV_FIELD_NO_ENC;
+ field_start = p++;
+ field_end = NULL;
/* Is it an escape character? */
if ((PHP_FGETCSV_UNI_CHECK(p, e, escape, escape_len) && escape != enclosure) ||
@@ -2575,17 +2579,11 @@
PHP_FGETCSV_UNI_CHECK(p+1, e, escape, escape_len) && escape == enclosure)
) {
/* Skip escape sequence and let next char be treated as literal
- * If enclosure is the same character as esacpe, it is considered as esacped
+ * If enclosure is the same character as escape, it is considered as escaped
* if it appears twice */
- p += escape_len;
+ p += escape_len - 1;
/* FALL THROUGH */
}
-
- /* Otherwise, starting a new field without enclosures */
- state = PHP_FGETCSV_FIELD_NO_ENC;
- field_start = p;
- field_end = NULL;
- p++;
break;
case PHP_FGETCSV_FIELD_WITH_ENC: