1--TEST--
2Bug #60455: stream_get_line and 2 lines, one possibly empty
3--FILE--
4<?php
5class TestStream {
6    private $lines = array();
7    private $s = 0;
8    private $eofth = 3;
9    function stream_open($path, $mode, $options, &$opened_path) {
10            $this->lines[] = "a\n";
11            $this->lines[] = ($path == "test://nonempty2nd" ? "b\n" : "\n");
12            if ($path == "test://eofafter2nd")
13                $this->eofth = 2;
14            return true;
15    }
16    function stream_read($count) {
17        if (key_exists($this->s++, $this->lines))
18            return $this->lines[$this->s - 1];
19
20        return "";
21    }
22    function stream_eof() {
23        return $this->s >= $this->eofth;
24    }
25
26}
27
28stream_wrapper_register("test", "TestStream");
29
30$f = fopen("test://nonempty2nd", "r");
31while (!feof($f)) {
32    $line = stream_get_line($f, 99, "\n");
33    var_dump($line);
34}
35$f = fopen("test://", "r");
36while (!feof($f)) {
37    $line = stream_get_line($f, 99, "\n");
38    var_dump($line);
39}
40$f = fopen("test://eofafter2nd", "r");
41while (!feof($f)) {
42    $line = stream_get_line($f, 99, "\n");
43    var_dump($line);
44}
45?>
46--EXPECT--
47string(1) "a"
48string(1) "b"
49bool(false)
50string(1) "a"
51string(0) ""
52bool(false)
53string(1) "a"
54string(0) ""
55