Bug #62097 [Wfx]: New behavior of string == has a compatibility problem
| From: | cataphract@php.net | Date: | Mon, 21 May 2012 23:09:36 +0000 |
| Subject: | Bug #62097 [Wfx]: New behavior of string == has a compatibility problem | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-170649@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62097&edit=1
ID: 62097
Updated by: cataphract@php.net
Reported by: kazuo at o-ishi dot jp
Summary: New behavior of string == has a compatibility
problem
Status: Wont fix
Type: Bug
Package: Scripting Engine problem
Operating System: Gentoo Linux
PHP Version: 5.4.4RC1
Block user comment: N
Private report: N
New Comment:
On a closer look, what's mentioned in the e-mail is not exactly the same thing because I was
comparing a "always string" comparison and a string comparison as a fallback to a float
comparison.
In any case, the problem you're mentioning could only be solved by a custom comparison
function, a solution that was not favored in this discussion.
Previous Comments:
------------------------------------------------------------------------
[2012-05-21 23:05:11] cataphract@php.net
Thanks for your report.
I raised this issue in internals:
http://www.mail-archive.com/internals@lists.php.net/msg58598.html
(see near the end)
and this was deemed a "very narrow use case".
So I'm marking this Wont Fix now, but feel free to take this issue to the internals mailing
list.
------------------------------------------------------------------------
[2012-05-21 17:09:25] kazuo at o-ishi dot jp
Description:
------------
The behavior of string comparison using == operator is changed in
https://github.com/php/php-src/commit/47db8a9aa19f6e17a1018becf9978315c79a1cb0
to fix bug #54547.
This change has a compatibility problem.
Before this change (PHP 5.4.3),
"01234" == "1234"
=> TRUE (OK)
"09223372036854775808" == "9223372036854775808"
=> TRUE (compared as float, but result is acceptable)
After change,
"01234" == "1234"
=> TRUE (OK)
"09223372036854775808" == "9223372036854775808"
=> FALSE (compared as string)
This behavior is not reasonable in that case.
New rule is not clear.
I think this change should be reverted, before release of 5.4.4.
Test script:
---------------
echo (("01234" == "1234") ? "true" : "false"),
"\n";
echo (("09223372036854775808" == "9223372036854775808") ? "true" :
"false"), "\n";
Expected result:
----------------
true
true
Actual result:
--------------
true
false
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62097&edit=1