Bug #77278 [Com]: libtidy 5.6 changes behavior of casting results
| From: | spam2 at rhsoft dot net | Date: | Mon, 10 Dec 2018 17:36:21 +0000 |
| Subject: | Bug #77278 [Com]: libtidy 5.6 changes behavior of casting results | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-218375@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77278&edit=1
ID: 77278
Comment by: spam2 at rhsoft dot net
Reported by: spam2 at rhsoft dot net
Summary: libtidy 5.6 changes behavior of casting results
Status: Open
Type: Bug
Package: Scripting Engine problem
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
standalone sample
<?php declare(strict_types=1);
$host = 'localhost';
$user = 'autotest';
$pwd = '****';
$db = 'autotest';
/** comment out this line and everything is fine with libtidy-5.6.0-2.fc28.x86_64 too */
$tidy = tidy_parse_string('bla', [], 'latin1');
/** that code is completly unrelated to tidy and must not change it's behavior */
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $user, $pwd, $db);
mysqli_query($conn, "DROP TABLE IF EXISTS
tidy_test;");
mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tidy_test (tidy_id
mediumint(7) UNSIGNED NOT NULL AUTO_INCREMENT, tidy_test char(2), PRIMARY KEY
(tidy_id));");
for($i=0; $i<=10; $i++)
{
mysqli_query($conn, "insert into tidy_test (tidy_test) values
('$i');");
}
$result = mysqli_query($conn, "select SQL_CALC_FOUND_ROWS * from
tidy_test");
$count_summary = mysqli_fetch_row(mysqli_query($conn, 'select SQL_NO_CACHE
found_rows()'))[0];
$pages_summary = (string)($count_summary / 3);
echo "PAGES-SUMMARY: $pages_summary\n";
if($pages_summary > (int)$pages_summary)
{
$pages_summary = (int)$pages_summary + 1;
}
echo "PAGES-SUMMARY: $pages_summary\n";
if((int)$pages_summary !== 4)
{
echo "CORRUPTION!\n";
}
else
{
echo "OK\n";
}
mysqli_query($conn, "DROP TABLE IF EXISTS tidy_test;");
?>
Previous Comments:
------------------------------------------------------------------------
[2018-12-10 16:55:13] spam2 at rhsoft dot net
Description:
------------
i doubt that it is expected behavior when some buggy library seems to play around with LOCALE that
unformatted output of float vars changes from dot to a comma
$pages_summary = (string)($count_summary / 3);
echo "PAGES-SUMMARY: $pages_summary\n";
https://github.com/htacg/tidy-html5/issues/780#issuecomment-445885150
libtidy-5.6.0-2.fc28.x86_64.rpm
[harry@srv-rhsoft:~]$ php /downloads/tidy-debug.php
PAGES-SUMMARY: 3,3333333333333
PAGES-SUMMARY: 3,3333333333333
CORRUPTION!
libtidy-5.4.0-4.fc28.20181003.rh.x86_64.rpm
[harry@srv-rhsoft:~]$ php /downloads/tidy-debug.php
PAGES-SUMMARY: 3.3333333333333
PAGES-SUMMARY: 4
OK
Test script:
---------------
libtidy 5.6 is touching LOCALE somewhere without a proper reset - period
look at the comma instad dot after typecasting a float value
libtidy-5.6.0-2.fc28.x86_64.rpm
[harry@srv-rhsoft:~]$ php /downloads/tidy-debug.php
PAGES-SUMMARY: 3,3333333333333
PAGES-SUMMARY: 3,3333333333333
CORRUPTION!
libtidy-5.4.0-4.fc28.20181003.rh.x86_64.rpm
[harry@srv-rhsoft:~]$ php /downloads/tidy-debug.php
PAGES-SUMMARY: 3.3333333333333
PAGES-SUMMARY: 4
OK
/** comment out this line and everything is fine with libtidy-5.6.0-2.fc28.x86_64 too */
$tidy = tidy_parse_string('bla', [], 'latin1');
/** that code is completly unrelated to tidy and must not change it's behavior */
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $user, $pwd, $db);
$result = mysqli_query($conn, "select SQL_CALC_FOUND_ROWS * from cl_autotest_youtube_items
where yi_cid='1' and yi_aktiv='1' order by yi_sort asc limit 0, 3");
$count_summary = mysqli_fetch_row(mysqli_query($conn, 'select SQL_NO_CACHE
found_rows()'))[0];
$pages_summary = (string)($count_summary / 3);
echo "PAGES-SUMMARY: $pages_summary\n";
if($pages_summary > (int)$pages_summary)
{
$pages_summary = (int)$pages_summary + 1;
}
echo "PAGES-SUMMARY: $pages_summary\n";
if((int)$pages_summary !== 4)
{
echo "CORRUPTION!\n";
}
else
{
echo "OK\n";
}
Expected result:
----------------
PAGES-SUMMARY: 3.3333333333333
PAGES-SUMMARY: 4
Actual result:
--------------
PAGES-SUMMARY: 3,3333333333333
PAGES-SUMMARY: 3,3333333333333
CORRUPTION!
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77278&edit=1