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