Re: Conversion of SplFileInfo instances to boolean

From: Date: Wed, 03 Dec 2014 21:09:42 +0000
Subject: Re: Conversion of SplFileInfo instances to boolean
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-79400@lists.php.net to get a copy of this message
On 3 December 2014 at 20:35, Christoph Becker <cmbecker69@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] < > sVÊF•‘Û > Ë@"qCFhttp://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 > >

« previous php.internals (#79400) next »