mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-30 12:06:56 +00:00
[3.x] Fix twig_compare w.r.t. whitespace trimming
This commit is contained in:
committed by
Fabien Potencier
parent
83d6a120ff
commit
9d115f6831
@@ -944,25 +944,25 @@ function twig_compare($a, $b)
|
||||
{
|
||||
// int <=> string
|
||||
if (\is_int($a) && \is_string($b)) {
|
||||
$b = trim($b);
|
||||
if (!is_numeric($b)) {
|
||||
$bTrim = trim($b, " \t\n\r\v\f");
|
||||
if (!is_numeric($bTrim)) {
|
||||
return (string) $a <=> $b;
|
||||
}
|
||||
if ((int) $b == $b) {
|
||||
return $a <=> (int) $b;
|
||||
if ((int) $bTrim == $bTrim) {
|
||||
return $a <=> (int) $bTrim;
|
||||
} else {
|
||||
return (float) $a <=> (float) $b;
|
||||
return (float) $a <=> (float) $bTrim;
|
||||
}
|
||||
}
|
||||
if (\is_string($a) && \is_int($b)) {
|
||||
$a = trim($a);
|
||||
if (!is_numeric($a)) {
|
||||
$aTrim = trim($a, " \t\n\r\v\f");
|
||||
if (!is_numeric($aTrim)) {
|
||||
return $a <=> (string) $b;
|
||||
}
|
||||
if ((int) $a == $a) {
|
||||
return (int) $a <=> $b;
|
||||
if ((int) $aTrim == $aTrim) {
|
||||
return (int) $aTrim <=> $b;
|
||||
} else {
|
||||
return (float) $a <=> (float) $b;
|
||||
return (float) $aTrim <=> (float) $b;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -971,23 +971,23 @@ function twig_compare($a, $b)
|
||||
if (is_nan($a)) {
|
||||
return 1;
|
||||
}
|
||||
$b = trim($b);
|
||||
if (!is_numeric($b)) {
|
||||
$bTrim = trim($b, " \t\n\r\v\f");
|
||||
if (!is_numeric($bTrim)) {
|
||||
return (string) $a <=> $b;
|
||||
}
|
||||
|
||||
return $a <=> (float) $b;
|
||||
return $a <=> (float) $bTrim;
|
||||
}
|
||||
if (\is_string($a) && \is_float($b)) {
|
||||
if (is_nan($b)) {
|
||||
return 1;
|
||||
}
|
||||
$a = trim($a);
|
||||
if (!is_numeric($a)) {
|
||||
$aTrim = trim($a, " \t\n\r\v\f");
|
||||
if (!is_numeric($aTrim)) {
|
||||
return $a <=> (string) $b;
|
||||
}
|
||||
|
||||
return (float) $a <=> $b;
|
||||
return (float) $aTrim <=> $b;
|
||||
}
|
||||
|
||||
// fallback to <=>
|
||||
|
||||
@@ -320,6 +320,10 @@ class CoreTest extends TestCase
|
||||
[-1, 10, 20],
|
||||
[-1, '10', 20],
|
||||
[-1, 10, '20'],
|
||||
|
||||
[1, 42, ' foo'],
|
||||
[0, 42, "42\f"],
|
||||
[1, 42, "\x00\x34\x32"],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user