diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index b461d0bc27e..4edc6361605 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1891,21 +1891,22 @@ static zend_result spl_filesystem_file_read_ex(spl_filesystem_object *intern, bo } if (!buf) { - return FAILURE; - } - - if (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_DROP_NEW_LINE)) { - if (line_len > 0 && buf[line_len - 1] == '\n') { - line_len--; - if (line_len > 0 && buf[line_len - 1] == '\r') { + intern->u.file.current_line = estrdup(""); + intern->u.file.current_line_len = 0; + } else { + if (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_DROP_NEW_LINE)) { + if (line_len > 0 && buf[line_len - 1] == '\n') { line_len--; + if (line_len > 0 && buf[line_len - 1] == '\r') { + line_len--; + } + buf[line_len] = '\0'; } - buf[line_len] = '\0'; } - } - intern->u.file.current_line = buf; - intern->u.file.current_line_len = line_len; + intern->u.file.current_line = buf; + intern->u.file.current_line_len = line_len; + } intern->u.file.current_line_num += line_add; return SUCCESS; diff --git a/ext/spl/tests/SplFileObject/fgetcsv_file_empty_lines.phpt b/ext/spl/tests/SplFileObject/fgetcsv_file_empty_lines.phpt deleted file mode 100644 index bcd68eeadba..00000000000 --- a/ext/spl/tests/SplFileObject/fgetcsv_file_empty_lines.phpt +++ /dev/null @@ -1,38 +0,0 @@ ---TEST-- -SplFileObject::fgetcsv with empty lines ---FILE-- -fwrite("foo,bar\n"); -$file->fwrite("\n"); -$file->fwrite("baz,qux"); - -$file->rewind(); - - -var_dump($file->fgetcsv()); -var_dump($file->fgetcsv()); -var_dump($file->fgetcsv()); -var_dump($file->fgetcsv()); - -?> ---EXPECT-- -array(2) { - [0]=> - string(3) "foo" - [1]=> - string(3) "bar" -} -array(1) { - [0]=> - NULL -} -array(2) { - [0]=> - string(3) "baz" - [1]=> - string(3) "qux" -} -bool(false) diff --git a/ext/spl/tests/SplFileObject/foreach_file_empty_lines.phpt b/ext/spl/tests/SplFileObject/foreach_file_empty_lines.phpt deleted file mode 100644 index 5fefdf0fddd..00000000000 --- a/ext/spl/tests/SplFileObject/foreach_file_empty_lines.phpt +++ /dev/null @@ -1,37 +0,0 @@ ---TEST-- -Iterate over SplFileObject with empty lines with CSV flags ---FILE-- -fwrite("foo,bar\n"); -$file->fwrite("\n"); -$file->fwrite("baz,qux"); - -$file->rewind(); - -$file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY /* | SplFileObject::DROP_NEW_LINE */); - - -foreach ($file as $line) { - var_dump($line); -} -?> ---EXPECT-- -array(2) { - [0]=> - string(3) "foo" - [1]=> - string(3) "bar" -} -array(1) { - [0]=> - NULL -} -array(2) { - [0]=> - string(3) "baz" - [1]=> - string(3) "qux" -} diff --git a/ext/spl/tests/SplFileObject/gh8563.phpt b/ext/spl/tests/SplFileObject/gh8563.phpt deleted file mode 100644 index 11309ae8101..00000000000 --- a/ext/spl/tests/SplFileObject/gh8563.phpt +++ /dev/null @@ -1,48 +0,0 @@ ---TEST-- -Bug GH-8563: Different results for seek() on SplFileObject and SplTempFileObject ---FILE-- -fwrite("line {$i}" . PHP_EOL); - $file_02->fwrite("line {$i}" . PHP_EOL); - $file_03->fwrite("line {$i}" . PHP_EOL); - $file_04->fwrite("line {$i}" . PHP_EOL); -} - -// reset -$file_01->rewind(); -$file_02->rewind(); -$file_03->rewind(); -$file_04->rewind(); - -// seek -$file_01->seek(INDEX); -$file_02->seek(INDEX); -$file_03->seek(INDEX); -$file_04->seek(INDEX); - -// show results -echo 'file_01: ' . $file_01->key(), PHP_EOL; -echo 'file_02: ' . $file_02->key(), PHP_EOL; -echo 'file_03: ' . $file_03->key(), PHP_EOL; -echo 'file_04: ' . $file_04->key(), PHP_EOL; -?> ---CLEAN-- - ---EXPECT-- -file_01: 4 -file_02: 4 -file_03: 4 -file_04: 4 diff --git a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_basic.phpt b/ext/spl/tests/SplFileObject_fgetcsv_basic.phpt similarity index 92% rename from ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_basic.phpt rename to ext/spl/tests/SplFileObject_fgetcsv_basic.phpt index ca584251af9..2580021426f 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_fgetcsv_basic.phpt +++ b/ext/spl/tests/SplFileObject_fgetcsv_basic.phpt @@ -13,7 +13,6 @@ fclose($fp); $fo = new SplFileObject('SplFileObject__fgetcsv1.csv'); var_dump($fo->fgetcsv()); -var_dump($fo->fgetcsv()); ?> --CLEAN-- string(1) "5" } -bool(false) diff --git a/ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt b/ext/spl/tests/SplFileObject_key_error001.phpt similarity index 97% rename from ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt rename to ext/spl/tests/SplFileObject_key_error001.phpt index 7d0e3ae8d96..0c21d0b905e 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt +++ b/ext/spl/tests/SplFileObject_key_error001.phpt @@ -18,5 +18,5 @@ var_dump($s->key()); var_dump($s->valid()); ?> --EXPECT-- -int(12) +int(14) bool(false) diff --git a/ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt b/ext/spl/tests/SplFileObject_key_error002.phpt similarity index 97% rename from ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt rename to ext/spl/tests/SplFileObject_key_error002.phpt index 0834dbc0524..8fc9b7fef0a 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt +++ b/ext/spl/tests/SplFileObject_key_error002.phpt @@ -18,5 +18,5 @@ var_dump($s->key()); var_dump($s->valid()); ?> --EXPECT-- -int(12) +int(13) bool(false) diff --git a/ext/spl/tests/bug81477.phpt b/ext/spl/tests/bug81477.phpt index 421c74dc4d6..f7730a791aa 100644 --- a/ext/spl/tests/bug81477.phpt +++ b/ext/spl/tests/bug81477.phpt @@ -21,6 +21,7 @@ string(8) "baz,bat " string(10) "more,data " +string(0) "" --CLEAN--