]> granicus.if.org Git - php/commitdiff
Fix #77024: SplFileObject::__toString() may return array
authorCraig Duncan <git@duncanc.co.uk>
Sat, 27 Apr 2019 22:44:48 +0000 (00:44 +0200)
committerPeter Kokot <peterkokot@gmail.com>
Sat, 27 Apr 2019 22:44:48 +0000 (00:44 +0200)
- Correct the behaviour of casting spl files to strings
- Add a test for Bug 77024

ext/spl/spl_directory.c
ext/spl/tests/bug77024.phpt [new file with mode: 0644]

index 47b3521d63586cdead910fa55692ac25dba95d64..4f274641e8b99792656fb9fd963b81f47c614883 100644 (file)
@@ -3111,7 +3111,7 @@ static const zend_function_entry spl_SplFileObject_functions[] = {
        SPL_ME(SplFileObject, seek,           arginfo_file_object_seek,          ZEND_ACC_PUBLIC)
        /* mappings */
        SPL_MA(SplFileObject, getCurrentLine, SplFileObject, fgets,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
-       SPL_MA(SplFileObject, __toString,     SplFileObject, current,    arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
+       SPL_MA(SplFileObject, __toString,     SplFileObject, fgets,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
diff --git a/ext/spl/tests/bug77024.phpt b/ext/spl/tests/bug77024.phpt
new file mode 100644 (file)
index 0000000..d61dc94
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+Bug #77024 SplFileObject::__toString() may return array
+--FILE--
+<?php
+
+$file = new SplTempFileObject;
+$file->fputcsv(['foo', 'bar', 'baz']);
+$file->rewind();
+$file->setFlags(SplFileObject::READ_CSV);
+echo $file . "\n";
+
+$tmp = tempnam(sys_get_temp_dir(), "php-tests-");
+file_put_contents($tmp, "line1\nline2\nline3\n");
+$file = new SplFileObject($tmp);
+$file->rewind();
+echo $file . "\n";
+unset($file);
+unlink($tmp);
+
+?>
+--EXPECT--
+foo,bar,baz
+
+line1