From 1762d63406539783f9aaf828de0753d50e49fa2d Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Tue, 28 Sep 2010 14:36:18 +0000 Subject: [PATCH] add another hook, maybe the last one, for MYSQLND_STMT, which was missed before --- ext/mysqlnd/mysqlnd_ps.c | 15 +++++++-------- ext/mysqlnd/mysqlnd_structs.h | 3 +++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 6ab773c4de..c06d1b4882 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -52,8 +52,6 @@ enum_func_status mysqlnd_fetch_stmt_row_cursor(MYSQLND_RES *result, void *param, static void mysqlnd_stmt_separate_result_bind(MYSQLND_STMT * const stmt TSRMLS_DC); static void mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const stmt, unsigned int param_no TSRMLS_DC); -static void mysqlnd_internal_free_stmt_content(MYSQLND_STMT * const stmt TSRMLS_DC); - /* {{{ mysqlnd_stmt::store_result */ static MYSQLND_RES * MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s TSRMLS_DC) @@ -228,7 +226,7 @@ MYSQLND_METHOD(mysqlnd_stmt, next_result)(MYSQLND_STMT * s TSRMLS_DC) } /* Free space for next result */ - mysqlnd_internal_free_stmt_content(s TSRMLS_CC); + s->m->free_stmt_content(s TSRMLS_CC); DBG_RETURN(s->m->parse_execute_response(s TSRMLS_CC)); } @@ -2062,12 +2060,12 @@ mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const s, unsigned int param /* }}} */ -/* {{{ mysqlnd_internal_free_stmt_content */ +/* {{{ mysqlnd_stmt::free_stmt_content */ static void -mysqlnd_internal_free_stmt_content(MYSQLND_STMT * const s TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_stmt, free_stmt_content)(MYSQLND_STMT * const s TSRMLS_DC) { MYSQLND_STMT_DATA * stmt = s? s->data:NULL; - DBG_ENTER("mysqlnd_internal_free_stmt_content"); + DBG_ENTER("mysqlnd_stmt::free_stmt_content"); if (!stmt) { DBG_VOID_RETURN; } @@ -2186,7 +2184,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, net_close)(MYSQLND_STMT * const s, zend_boo stmt->execute_cmd_buffer.buffer = NULL; } - mysqlnd_internal_free_stmt_content(s TSRMLS_CC); + s->m->free_stmt_content(s TSRMLS_CC); if (stmt->conn) { stmt->conn->m->free_reference(stmt->conn TSRMLS_CC); @@ -2324,7 +2322,8 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_stmt) MYSQLND_METHOD(mysqlnd_stmt, free_result_bind), MYSQLND_METHOD(mysqlnd_stmt, server_status), mysqlnd_stmt_execute_generate_request, - mysqlnd_stmt_execute_parse_response + mysqlnd_stmt_execute_parse_response, + MYSQLND_METHOD(mysqlnd_stmt, free_stmt_content) MYSQLND_CLASS_METHODS_END; diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index 33a99ce437..12ce11deb3 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -627,6 +627,7 @@ typedef void (*func_mysqlnd_stmt__free_result_bind)(MYSQLND_STMT * const stm typedef unsigned int (*func_mysqlnd_stmt__server_status)(const MYSQLND_STMT * const stmt TSRMLS_DC); typedef enum_func_status (*func_mysqlnd_stmt__generate_execute_request)(MYSQLND_STMT * const s, zend_uchar ** request, size_t *request_len, zend_bool * free_buffer TSRMLS_DC); typedef enum_func_status (*func_mysqlnd_stmt__parse_execute_response)(MYSQLND_STMT * const s TSRMLS_DC); +typedef void (*func_mysqlnd_stmt__free_stmt_content)(MYSQLND_STMT * const s TSRMLS_DC); struct st_mysqlnd_stmt_methods { @@ -678,6 +679,8 @@ struct st_mysqlnd_stmt_methods func_mysqlnd_stmt__generate_execute_request generate_execute_request; func_mysqlnd_stmt__parse_execute_response parse_execute_response; + + func_mysqlnd_stmt__free_stmt_content free_stmt_content; }; -- 2.40.0