Ah, I found another case... when the line length is longer than the read 
buffer. I'll post again in a few minutes.

G

-----Original Message-----
From: Garrett Serack [mailto:garre...@microsoft.com] 
Sent: Thursday, September 03, 2009 1:22 PM
To: Hans Åhlin; internals@lists.php.net
Subject: RE: [PHP-DEV] Fix for 49148 (combination of stream_get_line and fseek 
does not work correctly)

Without the patch, That is what will you see (windows or linux). (Which is 
wrong...)

The patch corrects the case where the stream has been fseek'd to the last line 
in the file, when the last line doesn't end with a line terminator. (where you 
see 'false' in the results).

Without the patch, the code mistakenly checks for EOF *after* characters have 
been read in, which is completely unnecessary (and incorrect) since the read 
operation has taken place already.

There could be some question as to the proper behavior when the stream *is* at 
EOF, and stream_get_line is called (return NULL or empty string), but the 
behavior previously was to return the empty string (keep calling 
stream_get_line and once you reach the end, you will just get empty strings).

G

-----Original Message-----
From: ahlin.h...@gmail.com [mailto:ahlin.h...@gmail.com] On Behalf Of Hans Åhlin
Sent: Wednesday, September 02, 2009 10:29 PM
To: internals@lists.php.net
Subject: [PHP-DEV] Fix for 49148 (combination of stream_get_line and fseek does 
not work correctly)

I just ran the test on Linux 2.6.29 FC11 Apache 2.2.13 and PHP 5.2.9

Result:

string 'line1' (length=5)
string '' (length=0)
string 'line1' (length=5)
string '' (length=0)
string 'line1' (length=5)
string 'line2' (length=5)
string 'line1' (length=5)
boolean false
string 'line1' (length=5)
string 'line2' (length=5)
string 'line1' (length=5)
string 'line2' (length=5)

-- 
MvH / Hans Åhlin
Tel: +46761488019
http//www.kronan-net.com/

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php


Reply via email to