Bug #68948 [Com]: feof() on temporary streams broken

From: Date: Sat, 07 Feb 2015 13:08:53 +0000
Subject: Bug #68948 [Com]: feof() on temporary streams broken
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-190506@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=68948&edit=1 ID: 68948 Comment by: sjaillet at gmail dot com Reported by: yunosh@php.net Summary: feof() on temporary streams broken Status: Open Type: Bug Package: Streams related Operating System: Linux PHP Version: master-Git-2015-01-29 (Git) Block user comment: N Private report: N New Comment: It's definitely a bug introduced recently. Indeed with: $stream = fopen("php://temp", "r+"); fwrite($stream, "0123456789"); rewind($stream); var_dump(fread($stream, 1024), ftell($stream), feof($stream)); The output for 5.5.20, 5.6.4, php7@20141201, HHVM 3.5.0 is: string(10) "0123456789" int(10) bool(true) And now with 5.5.21, 5.6.5, php7@20150101 the output was: string(10) "0123456789" int(10) bool(false) Previous Comments: ------------------------------------------------------------------------ [2015-01-29 20:02:47] yunosh@php.net It still happens if reading 11 bytes. And even with 10 bytes, this would be BC break against PHP 5. ------------------------------------------------------------------------ [2015-01-29 19:15:29] php at mcq8 dot be This is due to https://github.com/php/php-src/pull/936 You only get an EOF when you tried to read more than there is data. This is the same behaviour as reading from a file. ------------------------------------------------------------------------ [2015-01-29 17:42:00] yunosh@php.net Description: ------------ feof() doesn't work properly on temporary streams. Test script: --------------- $stream = fopen("php://temp", "r+"); fwrite($stream, "0123456789"); rewind($stream); var_dump(fread($stream, 10), ftell($stream), feof($stream)); Expected result: ---------------- string(10) "0123456789" int(10) bool(true) Actual result: -------------- string(10) "0123456789" int(10) bool(false) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=68948&edit=1

« previous php.bugs (#190506) next »