felipe Sun Feb 10 02:13:37 2008 UTC
Modified files:
/php-src/ext/standard file.c
Log:
Fixed Bug #42163 (fgetcsv() gives different output with and without Unicode)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/file.c?r1=1.508&r2=1.509&diff_format=u
Index: php-src/ext/standard/file.c
diff -u php-src/ext/standard/file.c:1.508 php-src/ext/standard/file.c:1.509
--- php-src/ext/standard/file.c:1.508 Sat Feb 9 19:46:49 2008
+++ php-src/ext/standard/file.c Sun Feb 10 02:13:37 2008
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.508 2008/02/09 19:46:49 felipe Exp $ */
+/* $Id: file.c,v 1.509 2008/02/10 02:13:37 felipe Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -2216,7 +2216,7 @@
if (len < 0) {
buf.v = php_stream_get_line_ex(stream, stream->readbuf_type,
NULL_ZSTR, 0, 0, &buf_len);
} else {
- buf.v = stream->readbuf_type == IS_UNICODE ? emalloc(UBYTES(len
+ 1)) : emalloc(len + 1);
+ buf.v = stream->readbuf_type == IS_UNICODE ? eumalloc(len + 1)
: emalloc(len + 1);
if (php_stream_get_line_ex(stream, stream->readbuf_type, buf,
len + 1, len + 1, &buf_len) == NULL) {
efree(buf.v);
RETVAL_FALSE;
@@ -2541,7 +2541,7 @@
if (*p == '\r' || *p == '\n') {
/* Terminal delimiter, treat as empty
field */
p++;
- add_next_index_stringl(return_value,
"", 0, 1);
+ add_next_index_unicodel(return_value,
(UChar*)"", 0, 1);
break;
}
@@ -2595,7 +2595,7 @@
/* Enclosure encountered, is it paired?
*/
if (PHP_FGETCSV_UNI_CHECK(p +
enclosure_len, e, enclosure, enclosure_len)) {
/* Double enclosure gets
translated to single enclosure */
- memmove(p, p + enclosure_len,
(e - p) - enclosure_len);
+ memmove(p, p + enclosure_len,
UBYTES((e - p) - enclosure_len));
e -= enclosure_len;
p += enclosure_len;
if (p >= e) break;
@@ -2672,7 +2672,7 @@
int cruft_len = p - (field_end
+ enclosure_len);
field = eumalloc(field_len +
cruft_len + 1);
- memcpy(field, field_start,
field_len);
+ memcpy(field, field_start,
UBYTES(field_len));
memcpy(field + field_len,
field_end + enclosure_len, UBYTES(cruft_len));
field_len += cruft_len;
field[field_len] = 0;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php