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

Reply via email to