--TEST-- GH-21742 (SplFileObject::fgets() throws at EOF in while (!$spl->eof()) loop) --FILE-- eof()) { echo $spl->fgets(); } echo "clean exit\n"; $empty = tempnam(sys_get_temp_dir(), 'spl'); file_put_contents($empty, ''); $spl2 = new SplFileObject($empty, 'r'); $iter = 0; while (!$spl2->eof()) { $iter++; $spl2->fgets(); if ($iter > 3) break; } echo "empty-file iters=$iter\n"; unlink($file); unlink($empty); ?> --EXPECT-- Line 0 Line 1 Line 2 Line 3 Line 4 clean exit empty-file iters=1