]> granicus.if.org Git - php/commitdiff
inject it directly. This is not C++ and I don't want to use hacks with similar structures
authorAndrey Hristov <andrey@php.net>
Mon, 10 Mar 2014 17:15:30 +0000 (19:15 +0200)
committerAndrey Hristov <andrey@php.net>
Mon, 10 Mar 2014 17:15:30 +0000 (19:15 +0200)
that are binary compatible. Better be explicit.

ext/mysqlnd/mysqlnd_ps.c
ext/mysqlnd/mysqlnd_result.c
ext/mysqlnd/mysqlnd_structs.h

index fc30bddcb5fa0d07b87cfed29bf6f2c60db805e8..669cc3365fb99c2506138de720c24551fe5ec6d7 100644 (file)
@@ -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;
 
index fc6f48581c6cc6d42298e0a4c9c2155457803de6..56610055724e11b3a1e640a52e29bc717b5a899b 100644 (file)
@@ -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);
index 65f1c57a002d775e293024a055684c90e843a326..7c7ab1a17bb3202c777680581f3ac17e8fc27d1a 100644 (file)
@@ -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);