iliaa Mon Apr 4 23:00:05 2005 EDT Modified files: /php-src/main/streams streams.c Log: Fixed bug #30362 (stream_get_line() not reading data correctly). http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.72&r2=1.73&ty=u Index: php-src/main/streams/streams.c diff -u php-src/main/streams/streams.c:1.72 php-src/main/streams/streams.c:1.73 --- php-src/main/streams/streams.c:1.72 Mon Apr 4 15:34:32 2005 +++ php-src/main/streams/streams.c Mon Apr 4 23:00:04 2005 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.72 2005/04/04 19:34:32 pollita Exp $ */ +/* $Id: streams.c,v 1.73 2005/04/05 03:00:04 iliaa Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -843,6 +843,7 @@ { char *e, *buf; size_t toread; + int skip = 0; php_stream_fill_read_buffer(stream, maxlen TSRMLS_CC); @@ -850,15 +851,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; } } @@ -868,8 +870,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