@@ -196,7 +196,7 @@ MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object)(MYSQLND * to_be_
196
196
197
197
/* {{{ mysqlnd_object_factory::get_prepared_statement */
198
198
static MYSQLND_STMT *
199
- MYSQLND_METHOD (mysqlnd_object_factory , get_prepared_statement )(MYSQLND_CONN_DATA * const conn )
199
+ MYSQLND_METHOD (mysqlnd_object_factory , get_prepared_statement )(MYSQLND_CONN_DATA * const conn , zend_bool persistent )
200
200
{
201
201
size_t alloc_size = sizeof (MYSQLND_STMT ) + mysqlnd_plugin_count () * sizeof (void * );
202
202
MYSQLND_STMT * ret = mnd_pecalloc (1 , alloc_size , conn -> persistent );
@@ -210,12 +210,12 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA
210
210
ret -> m = mysqlnd_stmt_get_methods ();
211
211
ret -> persistent = conn -> persistent ;
212
212
213
- stmt = ret -> data = mnd_pecalloc (1 , sizeof (MYSQLND_STMT_DATA ), conn -> persistent );
213
+ stmt = ret -> data = mnd_pecalloc (1 , sizeof (MYSQLND_STMT_DATA ), persistent );
214
214
DBG_INF_FMT ("stmt=%p" , stmt );
215
215
if (!stmt ) {
216
216
break ;
217
217
}
218
- stmt -> persistent = conn -> persistent ;
218
+ stmt -> persistent = persistent ;
219
219
stmt -> error_info = & (stmt -> error_info_impl );
220
220
stmt -> upsert_status = & (stmt -> upsert_status_impl );
221
221
stmt -> state = MYSQLND_STMT_INITTED ;
@@ -226,18 +226,19 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA
226
226
}
227
227
228
228
stmt -> prefetch_rows = MYSQLND_DEFAULT_PREFETCH_ROWS ;
229
+ stmt -> error_info -> error_list = mnd_pecalloc (1 , sizeof (zend_llist ), ret -> persistent );
230
+ if (!stmt -> error_info -> error_list ) {
231
+ break ;
232
+ }
233
+
234
+ zend_llist_init (stmt -> error_info -> error_list , sizeof (MYSQLND_ERROR_LIST_ELEMENT ), (llist_dtor_func_t ) mysqlnd_error_list_pdtor , persistent );
235
+
229
236
/*
230
237
Mark that we reference the connection, thus it won't be
231
238
be destructed till there is open statements. The last statement
232
239
or normal query result will close it then.
233
240
*/
234
241
stmt -> conn = conn -> m -> get_reference (conn );
235
- stmt -> error_info -> error_list = mnd_pecalloc (1 , sizeof (zend_llist ), ret -> persistent );
236
- if (!stmt -> error_info -> error_list ) {
237
- break ;
238
- }
239
-
240
- zend_llist_init (stmt -> error_info -> error_list , sizeof (MYSQLND_ERROR_LIST_ELEMENT ), (llist_dtor_func_t ) mysqlnd_error_list_pdtor , conn -> persistent );
241
242
242
243
DBG_RETURN (ret );
243
244
} while (0 );
0 commit comments