iliaa Mon Apr 4 23:00:13 2005 EDT Modified files: (Branch: PHP_5_0) /php-src/main/streams streams.c Log: MFH: Fixed bug #30362 (stream_get_line() not reading data correctly). http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.61.2.7&r2=1.61.2.8&ty=u Index: php-src/main/streams/streams.c diff -u php-src/main/streams/streams.c:1.61.2.7 php-src/main/streams/streams.c:1.61.2.8 --- php-src/main/streams/streams.c:1.61.2.7 Mon Apr 4 15:48:14 2005 +++ php-src/main/streams/streams.c Mon Apr 4 23:00:13 2005 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.61.2.7 2005/04/04 19:48:14 pollita Exp $ */ +/* $Id: streams.c,v 1.61.2.8 2005/04/05 03:00:13 iliaa Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -832,6 +832,7 @@ { char *e, *buf; size_t toread; + int skip = 0; php_stream_fill_read_buffer(stream, maxlen TSRMLS_CC); @@ -839,15 +840,16 @@ toread = maxlen; } else { if (delim_len == 1) { - e = memchr(stream->readbuf, *delim, stream->readbuflen); + e = memchr(stream->readbuf + stream->readpos, *delim, stream->readbuflen - stream->readpos); } else { - e = php_memnstr(stream->readbuf, delim, delim_len, (stream->readbuf + stream->readbuflen)); + e = php_memnstr(stream->readbuf + stream->readpos, delim, delim_len, (stream->readbuf + stream->readbuflen)); } if (!e) { toread = maxlen; } else { - toread = e - (char *) stream->readbuf; + toread = e - (char *) stream->readbuf - stream->readpos; + skip = 1; } } @@ -857,8 +859,12 @@ buf = emalloc(toread + 1); *returned_len = php_stream_read(stream, buf, toread); - + if (*returned_len >= 0) { + if (skip) { + stream->readpos += delim_len; + stream->position += delim_len; + } buf[*returned_len] = '\0'; return buf; } else {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php