#24622 [Fbk->Csd]: Net_SmartIRC: $x=new x; if(!$x) ... fails on PHP 4.1.2

From: Date: Tue, 15 Jul 2003 22:05:24 +0000
Subject: #24622 [Fbk->Csd]: Net_SmartIRC: $x=new x; if(!$x) ... fails on PHP 4.1.2
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-18278@lists.php.net to get a copy of this message
ID: 24622 Updated by: meebey@php.net Reported By: phpbugsspam at netebb dot com -Status: Feedback +Status: Closed Bug Type: PEAR related Operating System: Any PHP Version: Irrelevant Assigned To: meebey New Comment: This bug has been fixed in CVS. In case this was a PHP problem, snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. In case this was a documentation problem, the fix will show up soon at http://www.php.net/manual/. In case this was a PHP.net website problem, the change will show up on the PHP.net site and on the mirror sites in short time. Thank you for the report, and for helping us make PHP better. I removed the checks... Previous Comments: ------------------------------------------------------------------------ [2003-07-15 12:32:15] et@php.net That === false check is nonsense, imho. === false checks if the first operand is false, of the type boolean - which is impossible unless you set $this to false in the constructor, which is a dirty hack and won't happen if you do sane coding. So, === false is bogus. An object just evaluates to false if it has no member variables... maybe that is what happens. Maybe a default value in the classes will "fix" this... (Note: IMO, the check if object creation was "successful" isn't neccessary at all, because there's no reason for it to fail except for "class not found", and that's a fatal one.) ------------------------------------------------------------------------ [2003-07-15 11:16:58] phpbugspam at netebb dot com I don't "think" it needs a patch. It does need it. Without it, !$newactionhandler evals to true and the function returns false, which is not correct. It appears that applying negation '!' to a newly created object, returns false, even if the object is a valid object. Of course, this is with PHP 4.1.2 that comes with Debian Woody, your version may work different. Do ask *me* why! Now it's my turn to ask why. Why *not* apply it? It's a simple enough patch, and certainly wont break anything. -Ross ------------------------------------------------------------------------ [2003-07-15 10:31:00] meebey@php.net Why do you think it needs this patch to work correctly, wat happens without the patch? ------------------------------------------------------------------------ [2003-07-12 13:06:41] phpbugsspam at netebb dot com Description: ------------ With PHP 4.1.2, this patch is needed to operate correctly: $ diff -uw SmartIRC.php.bak SmartIRC.php --- SmartIRC.php.bak Sat Jul 12 10:09:45 2003 +++ SmartIRC.php Sat Jul 12 11:02:39 2003 @@ -1280,7 +1280,7 @@ $id = $this->_actionhandlerid++; $newactionhandler = &new Net_SmartIRC_actionhandler(); - if (!$newactionhandler) { + if ($newactionhandler === false) { return false; } @@ -1386,7 +1386,7 @@ $id = $this->_timehandlerid++; $newtimehandler = &new Net_SmartIRC_timehandler(); - if (!$newtimehandler) { + if ($newtimehandler === false) { return false; } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24622&edit=1

« previous php.pear.dev (#18278) next »