Bug #77278 [Com]: libtidy 5.6 changes behavior of casting results

From: 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

« previous php.bugs (#218375) next »