com php-src: inject it directly. This is not C++ and I don't want to use hacks with similar structures that are binary compatible. Better be
explicit.: ext/mysqlnd/mysqlnd_ps.c ext/mysqlnd/mysqlnd _result.c ext/mysqlnd/mysqlnd_structs.h
| From: | Andrey Hristov | Date: | Mon, 10 Mar 2014 17:15:30 +0000 |
| Subject: | com php-src: inject it directly. This is not C++ and I don't want to use hacks with similar structures that are binary compatible. Better be explicit.: ext/mysqlnd/mysqlnd_ps.c ext/mysqlnd/mysqlnd _result.c ext/mysqlnd/mysqlnd_structs.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-76427@lists.php.net to get a copy of this message | ||
Commit: d2a291393ad899e0ea6fcb11c45095a51ddabb7a
Author: Andrey Hristov <andrey@php.net> Mon, 10 Mar 2014 19:15:30 +0200
Parents: 73f03a47d0cd97a3c55a79b897ba55ea1ed2e90e
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d2a291393ad899e0ea6fcb11c45095a51ddabb7a
Log:
inject it directly. This is not C++ and I don't want to use hacks with similar structures
that are binary compatible. Better be explicit.
Changed paths:
M ext/mysqlnd/mysqlnd_ps..c
M ext/mysqlnd/mysqlnd_result.c
M ext/mysqlnd/mysqlnd_structs.h
Diff:
diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c
index fc30bdd..669cc33 100644
--- a/ext/mysqlnd/mysqlnd_ps.c
+++ b/ext/mysqlnd/mysqlnd_ps.c
@@ -95,7 +95,7 @@ MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s TSRMLS_DC)
DBG_RETURN(NULL);
}
- ret = result->m.store_result_fetch_data(conn, result, result->meta, TRUE TSRMLS_CC);
+ ret = result->m.store_result_fetch_data(conn, result, result->meta,
&result->stored_data->row_buffers, TRUE TSRMLS_CC);
result->stored_data->m.fetch_row = mysqlnd_stmt_fetch_row_buffered;
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index fc6f485..5661005 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -1131,6 +1131,7 @@ MYSQLND_METHOD(mysqlnd_res, fetch_row)(MYSQLND_RES * result, void * param,
unsig
enum_func_status
MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA * const conn, MYSQLND_RES *
result,
MYSQLND_RES_METADATA * meta,
+ MYSQLND_MEMORY_POOL_CHUNK ***row_buffers,
zend_bool binary_protocol TSRMLS_DC)
{
enum_func_status ret;
@@ -1142,13 +1143,13 @@ MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA *
const c
set = result->stored_data;
- if (!set) {
+ if (!set || !row_buffers) {
ret = FAIL;
goto end;
}
if (free_rows) {
- set->row_buffers = mnd_emalloc((size_t)(free_rows * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
- if (!set->row_buffers) {
+ *row_buffers = mnd_emalloc((size_t)(free_rows * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
+ if (!*row_buffers) {
SET_OOM_ERROR(*conn->error_info);
ret = FAIL;
goto end;
@@ -1184,16 +1185,16 @@ MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA *
const c
ret = FAIL;
goto end;
}
- new_row_buffers = mnd_erealloc(set->row_buffers, (size_t)(total_allocated_rows *
sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
+ new_row_buffers = mnd_erealloc(*row_buffers, (size_t)(total_allocated_rows *
sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
if (!new_row_buffers) {
SET_OOM_ERROR(*conn->error_info);
ret = FAIL;
goto end;
}
- set->row_buffers = new_row_buffers;
+ *row_buffers = new_row_buffers;
}
free_rows--;
- set->row_buffers[set->row_count] = row_packet->row_buffer;
+ (*row_buffers)[set->row_count] = row_packet->row_buffer;
set->row_count++;
@@ -1228,7 +1229,7 @@ MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA * const
c
ret = FAIL;
goto end;
}
- set->row_buffers = mnd_erealloc(set->row_buffers, (size_t) (set->row_count *
sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
+ *row_buffers = mnd_erealloc(*row_buffers, (size_t) (set->row_count *
sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
}
if (conn->upsert_status->server_status & SERVER_MORE_RESULTS_EXISTS) {
@@ -1276,7 +1277,7 @@ MYSQLND_METHOD(mysqlnd_res, store_result)(MYSQLND_RES * result,
DBG_RETURN(NULL);
}
- ret = result->m.store_result_fetch_data(conn, result, result->meta, flags &
MYSQLND_STORE_PS TSRMLS_CC);
+ ret = result->m..store_result_fetch_data(conn, result, result->meta,
&result->stored_data->row_buffers, flags & MYSQLND_STORE_PS TSRMLS_CC);
if (FAIL == ret) {
if (result->stored_data) {
COPY_CLIENT_ERROR(*conn->error_info, result->stored_data->error_info);
diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h
index 65f1c57..7c7ab1a 100644
--- a/ext/mysqlnd/mysqlnd_structs.h
+++ b/ext/mysqlnd/mysqlnd_structs.h
@@ -631,7 +631,7 @@ typedef const MYSQLND_FIELD *(*func_mysqlnd_res__fetch_fields)(MYSQLND_RES * con
typedef enum_func_status (*func_mysqlnd_res__read_result_metadata)(MYSQLND_RES * result,
MYSQLND_CONN_DATA * conn TSRMLS_DC);
typedef unsigned long * (*func_mysqlnd_res__fetch_lengths)(MYSQLND_RES * const result TSRMLS_DC);
-typedef enum_func_status (*func_mysqlnd_res__store_result_fetch_data)(MYSQLND_CONN_DATA * const
conn, MYSQLND_RES * result, MYSQLND_RES_METADATA *meta, zend_bool binary_protocol TSRMLS_DC);
+typedef enum_func_status (*func_mysqlnd_res__store_result_fetch_data)(MYSQLND_CONN_DATA * const
conn, MYSQLND_RES * result, MYSQLND_RES_METADATA * meta, MYSQLND_MEMORY_POOL_CHUNK *** row_buffers,
zend_bool binary_protocol TSRMLS_DC);
typedef void (*func_mysqlnd_res__free_result_buffers)(MYSQLND_RES * result TSRMLS_DC); /*
private */
typedef enum_func_status (*func_mysqlnd_res__free_result)(MYSQLND_RES * result, zend_bool implicit
TSRMLS_DC);