1--TEST-- 2Bug #60817: stream_get_line() reads from stream even when there is already sufficient data buffered 3--FILE-- 4<?php 5class TestStream { //data, empty data, empty data + eof 6 private $s = 0; 7 function stream_open($path, $mode, $options, &$opened_path) { 8 return true; 9 } 10 function stream_read($count) { 11 echo "Read done\n"; 12 if ($this->s++ == 0) 13 return "a\nbb\ncc"; 14 15 return ""; 16 } 17 function stream_eof() { 18 return $this->s >= 2; 19 } 20 21} 22 23stream_wrapper_register("test", "TestStream"); 24 25$f = fopen("test://", "r"); 26while (!feof($f)) { 27 $line = stream_get_line($f, 99, "\n"); 28 var_dump($line); 29} 30 31--EXPECT-- 32Read done 33string(1) "a" 34string(2) "bb" 35Read done 36string(2) "cc" 37