Browse Source

Fix for bug #52115 mysqli_result::fetch_all returns null, not an empty array

experimental/lemon
Andrey Hristov 16 years ago
parent
commit
c7f10efabc
  1. 6
      ext/mysqli/tests/mysqli_fetch_all.phpt
  2. 11
      ext/mysqlnd/mysqlnd_result.c

6
ext/mysqli/tests/mysqli_fetch_all.phpt

@ -383,7 +383,8 @@ array(2) {
}
}
[011]
NULL
array(0) {
}
[013]
array(2) {
[0]=>
@ -402,7 +403,8 @@ array(2) {
}
}
[016]
NULL
array(0) {
}
[017]
array(1) {
[0]=>

11
ext/mysqlnd/mysqlnd_result.c

@ -1568,16 +1568,17 @@ MYSQLND_METHOD(mysqlnd_res, fetch_all)(MYSQLND_RES * result, unsigned int flags,
DBG_INF_FMT("flags=%u", flags);
/* mysqlnd_res::fetch_all works with buffered resultsets only */
if (!set ||
!set->row_count || !set->data_cursor ||
set->data_cursor >= set->data + set->row_count)
{
if (result->unbuf || (!result->unbuf && !set)) {
RETVAL_NULL();
DBG_VOID_RETURN;
}
}
mysqlnd_array_init(return_value, (unsigned int) set->row_count);
if (!set->row_count || !set->data_cursor || set->data_cursor >= set->data + set->row_count) {
DBG_VOID_RETURN;
}
while (set->data_cursor &&
(set->data_cursor - set->data) < (set->row_count * result->meta->field_count))
{

Loading…
Cancel
Save