Merge branch 'PHP-7.4' into PHP-8.0

* PHP-7.4:
  Fix #74779: x() and y() truncating floats to integers
This commit is contained in:
Christoph M. Becker 2021-02-05 13:11:22 +01:00
commit 4be5b4aa25
3 changed files with 46 additions and 1 deletions

3
NEWS
View file

@ -6,6 +6,9 @@ PHP NEWS
. Fixed bug #53251 (bindtextdomain with null dir doesn't return old value).
(cmb)
- MySQLi:
. Fixed bug #74779 (x() and y() truncating floats to integers). (cmb)
- Opcache:
. Fixed bug #80634 (write_property handler of internal classes is skipped on
preloaded JITted code). (Dmitry)

View file

@ -0,0 +1,42 @@
--TEST--
Bug #74779 (x() and y() truncating floats to integers)
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifconnectfailure.inc');
if (!setlocale(LC_NUMERIC, "de_DE", "de_DE.UTF-8", "de-DE")) die('skip locale not available');
?>
--FILE--
<?php
require_once("connect.inc");
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
}
if (!setlocale(LC_NUMERIC, "de_DE", "de_DE.UTF-8", "de-DE")) {
echo "[002] Cannot set locale\n";
}
if (!$link->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true)) {
printf("[003] [%d] %s\n", $link->errno, $link->error);
}
if (!$result = $link->query("SELECT Y(Point(56.7, 53.34))")) {
printf("[004] [%d] %s\n", $link->errno, $link->error);
}
if (!$array = $result->fetch_array(MYSQLI_ASSOC)) {
printf("[005] [%d] %s\n", $link->errno, $link->error);
}
var_dump($array);
mysqli_close($link);
?>
--EXPECT--
array(1) {
["Y(Point(56.7, 53.34))"]=>
float(53,34)
}

View file

@ -1667,7 +1667,7 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_ROW_BUFFER * row_buffer, zval *
zend_uchar save = *(p + len);
/* We have to make it ASCIIZ temporarily */
*(p + len) = '\0';
ZVAL_DOUBLE(current_field, atof((char *) p));
ZVAL_DOUBLE(current_field, zend_strtod((char *) p, NULL));
*(p + len) = save;
}
#endif /* MYSQLND_STRING_TO_INT_CONVERSION */