On 3 December 2014 at 20:35, Christoph Becker <[email protected]> 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
>
>