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

Reply via email to