ID: 26772
User updated by: giovanni at giacobbi dot net
Reported By: giovanni at giacobbi dot net
Status: Open
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 4.3.4
New Comment:
ok ok, i got it. Follows a working patch.
Well, the patch is just a hack in my opinion, but.. hey, if there is a
"php_stream_from_zval_no_verify" macro it means you already hacked it
for something..
Maybe i haven't understood the API structure very well yet, but can
php_streams.h access directly zend_fetch_resource() without using a
zend_list.h macro?
--- php-4.3.4/ext/standard/file.c.orig 2003-10-10 03:38:01.000000000
+0200
+++ php-4.3.4/ext/standard/file.c 2004-01-03 04:08:04.000000000 +0100
@@ -1358,7 +1358,10 @@
WRONG_PARAM_COUNT;
}
- php_stream_from_zval(stream, arg1);
+ /* we want our way to handle the error */
+ php_stream_from_zval_no_verify(stream, arg1);
+ if (!stream)
+ goto exit_failed;
if (argc == 1) {
/* ask streams to give us a buffer of an appropriate size */
Previous Comments:
------------------------------------------------------------------------
[2004-01-02 21:30:59] giovanni at giacobbi dot net
Description:
------------
See the example code. It should return FALSE according to the manual
(and to common good sense).
This is causing valid code like
while (($str = fgets($fd)) !== FALSE) {
...
}
to go into infinite loop, which is very bad.
I tried to look at the source code but it looks correct, as it should
fall in file.c:1395, at the exit_failed label.
Reproduce code:
---------------
<?php
$fd = FALSE;
$retval = @fgets($fd);
var_dump($retval);
Expected result:
----------------
FALSE
Actual result:
--------------
NULL
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26772&edit=1