mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
Merge branch 'PHP-7.1'
This commit is contained in:
commit
fb22a0f48d
27
ext/mysqli/tests/bug73800.phpt
Normal file
27
ext/mysqli/tests/bug73800.phpt
Normal file
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
Bug #73800 (sporadic segfault with MYSQLI_OPT_INT_AND_FLOAT_NATIVE)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once('skipif.inc');
|
||||
require_once('skipifconnectfailure.inc');
|
||||
if (PHP_INT_SIZE != 8) die('skip requires 64-bit');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("connect.inc");
|
||||
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
|
||||
|
||||
$link->query('SET @@global.max_allowed_packet = 67108864');
|
||||
$link->close();
|
||||
|
||||
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
|
||||
$link->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
|
||||
|
||||
$res = $link->query("SELECT RPAD('1',9000000,'1') as a,RPAD('1',9000000,'1') as b, 9223372036854775807 as c");
|
||||
$r = $res->fetch_array();
|
||||
|
||||
var_dump($r['c']);
|
||||
?>
|
||||
--EXPECT--
|
||||
int(9223372036854775807)
|
25
ext/mysqli/tests/bug74021.phpt
Normal file
25
ext/mysqli/tests/bug74021.phpt
Normal file
@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
Bug #74021 (fetch_array broken data. Data more then MEDIUMBLOB)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once('skipif.inc');
|
||||
require_once('skipifconnectfailure.inc');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once("connect.inc");
|
||||
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
|
||||
|
||||
$link->query('SET @@global.max_allowed_packet = 67108864');
|
||||
$link->close();
|
||||
|
||||
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
|
||||
$res = $link->query("SELECT RPAD('1',9000000,'1') as a,RPAD('1',9000000,'1') as b");
|
||||
$r = $res->fetch_array();
|
||||
var_dump(md5($r['a']));
|
||||
var_dump(md5($r['b']));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(32) "42ca0fd16ab6b6d4b9d47dc0a4a8b12a"
|
||||
string(32) "42ca0fd16ab6b6d4b9d47dc0a4a8b12a"
|
@ -1466,6 +1466,7 @@ php_mysqlnd_read_row_ex(MYSQLND_PFC * pfc,
|
||||
MYSQLND_PACKET_HEADER header;
|
||||
zend_uchar * p = NULL;
|
||||
zend_bool first_iteration = TRUE;
|
||||
size_t prealloc_more_bytes;
|
||||
|
||||
DBG_ENTER("php_mysqlnd_read_row_ex");
|
||||
|
||||
@ -1481,8 +1482,9 @@ php_mysqlnd_read_row_ex(MYSQLND_PFC * pfc,
|
||||
We're allocating an extra byte, as php_mysqlnd_rowp_read_text_protocol_aux
|
||||
needs to be able to append a terminating \0 for atoi/atof.
|
||||
*/
|
||||
*data_size = 1;
|
||||
prealloc_more_bytes = 1;
|
||||
|
||||
*data_size = 0;
|
||||
while (1) {
|
||||
if (FAIL == mysqlnd_read_header(pfc, vio, &header, stats, error_info)) {
|
||||
ret = FAIL;
|
||||
@ -1493,7 +1495,7 @@ php_mysqlnd_read_row_ex(MYSQLND_PFC * pfc,
|
||||
|
||||
if (first_iteration) {
|
||||
first_iteration = FALSE;
|
||||
*buffer = pool->get_chunk(pool, *data_size);
|
||||
*buffer = pool->get_chunk(pool, *data_size + prealloc_more_bytes);
|
||||
if (!*buffer) {
|
||||
ret = FAIL;
|
||||
break;
|
||||
@ -1508,7 +1510,7 @@ php_mysqlnd_read_row_ex(MYSQLND_PFC * pfc,
|
||||
/*
|
||||
We have to realloc the buffer.
|
||||
*/
|
||||
if (FAIL == pool->resize_chunk(pool, *buffer, *data_size)) {
|
||||
if (FAIL == pool->resize_chunk(pool, *buffer, *data_size + prealloc_more_bytes)) {
|
||||
SET_OOM_ERROR(error_info);
|
||||
ret = FAIL;
|
||||
break;
|
||||
@ -1531,7 +1533,6 @@ php_mysqlnd_read_row_ex(MYSQLND_PFC * pfc,
|
||||
pool->free_chunk(pool, *buffer);
|
||||
*buffer = NULL;
|
||||
}
|
||||
(*data_size)--;
|
||||
DBG_RETURN(ret);
|
||||
}
|
||||
/* }}} */
|
||||
|
Loading…
Reference in New Issue
Block a user