On 3 December 2014 at 20:35, Christoph Becker <cmbecke...@gmx.de> wrote:

> Hello internals,
>
> today I stumbled over issue #65213[1] which has been reported as a bug,
> but was changed to a feature request without any hint why the conversion
> of SplFileInfo instances to boolean throws a catchable fatal error.
>
> Even worse, due to optimizations in OPcache (and maybe other optimizers
> as well), this does not always happen.  Consider the following snippet:
>
>     <?php
>
>     $o = new SplFileObject('.');
>     if (!$o) {
>     } else {
>         var_dump(!$o);
>     }
>
> Without any optimization this throws the error in line 4 (the if
> clause); with OPcache the error is thrown in line 6.  Apparently that is
> caused by a optimization where BOOL_NOT,JMPZ is converted to NOP,JMPNZ[2].
>
> IOW: with OPcache enabled `if (!$o)` works fine, but without OPcache it
> is an error.  IMHO both should behave identically.
>
> [1] <https://bugs.php.net/bug.php?id=65213>
>

This looks fixed in master (https://github.com/php/php-src/commit/8904f72
<https://github.com/php/php-src/commit/8904f72d7c47253345f7039afd8ca754442c7e34>
).


> [2] <
> http://lxr.php.net/xref/PHP_5_5/ext/opcache/Optimizer/block_pass.c#816>
>
> --
> Christoph M. Becker
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to