Re: Conversion of SplFileInfo instances to boolean

From: Date: Wed, 03 Dec 2014 22:09:45 +0000
Subject: Re: Conversion of SplFileInfo instances to boolean
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-79404@lists.php.net to get a copy of this message
Peter Cowburn wrote: > 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> > ). Indeed, thanks. <http://3v4l.org/1fHVC> confirms that. However, if the former behavior is regarded as a bug, shouldn't it be fixed for PHP 5.5 and PHP 5.6 as well? Anyhow, the bug report/feature request might be closed. -- Christoph M. Becker

« previous php.internals (#79404) next »