@@ -190,8 +190,6 @@ MYSQLND_METHOD(mysqlnd_result_unbuffered, free_result)(MYSQLND_RES_UNBUFFERED *
190
190
result -> row_packet = NULL ;
191
191
}
192
192
193
- mysqlnd_mempool_restore_state (result -> result_set_memory_pool );
194
-
195
193
DBG_VOID_RETURN ;
196
194
}
197
195
/* }}} */
@@ -261,8 +259,6 @@ MYSQLND_METHOD(mysqlnd_result_buffered, free_result)(MYSQLND_RES_BUFFERED * cons
261
259
set -> row_buffers = NULL ;
262
260
}
263
261
264
- mysqlnd_mempool_restore_state (set -> result_set_memory_pool );
265
-
266
262
DBG_VOID_RETURN ;
267
263
}
268
264
/* }}} */
@@ -275,6 +271,12 @@ MYSQLND_METHOD(mysqlnd_res, free_result_buffers)(MYSQLND_RES * result)
275
271
DBG_ENTER ("mysqlnd_res::free_result_buffers" );
276
272
DBG_INF_FMT ("%s" , result -> unbuf ? "unbuffered" :(result -> stored_data ? "buffered" :"unknown" ));
277
273
274
+ if (result -> meta ) {
275
+ ZEND_ASSERT (zend_arena_contains (result -> memory_pool -> arena , result -> meta ));
276
+ result -> meta -> m -> free_metadata (result -> meta );
277
+ result -> meta = NULL ;
278
+ }
279
+
278
280
if (result -> unbuf ) {
279
281
result -> unbuf -> m .free_result (result -> unbuf , result -> conn ? result -> conn -> stats : NULL );
280
282
result -> unbuf = NULL ;
@@ -283,6 +285,9 @@ MYSQLND_METHOD(mysqlnd_res, free_result_buffers)(MYSQLND_RES * result)
283
285
result -> stored_data = NULL ;
284
286
}
285
287
288
+ mysqlnd_mempool_restore_state (result -> memory_pool );
289
+ mysqlnd_mempool_save_state (result -> memory_pool );
290
+
286
291
DBG_VOID_RETURN ;
287
292
}
288
293
/* }}} */
@@ -294,12 +299,6 @@ void MYSQLND_METHOD(mysqlnd_res, free_result_contents_internal)(MYSQLND_RES * re
294
299
{
295
300
DBG_ENTER ("mysqlnd_res::free_result_contents_internal" );
296
301
297
- if (result -> meta ) {
298
- ZEND_ASSERT (zend_arena_contains (result -> memory_pool -> arena , result -> meta ));
299
- result -> meta -> m -> free_metadata (result -> meta );
300
- result -> meta = NULL ;
301
- }
302
-
303
302
result -> m .free_result_buffers (result );
304
303
305
304
DBG_VOID_RETURN ;
@@ -1926,6 +1925,8 @@ mysqlnd_result_init(const unsigned int field_count)
1926
1925
ret -> field_count = field_count ;
1927
1926
ret -> m = * mysqlnd_result_get_methods ();
1928
1927
1928
+ mysqlnd_mempool_save_state (pool );
1929
+
1929
1930
DBG_RETURN (ret );
1930
1931
}
1931
1932
/* }}} */
@@ -1941,7 +1942,6 @@ mysqlnd_result_unbuffered_init(MYSQLND_RES *result, const unsigned int field_cou
1941
1942
1942
1943
DBG_ENTER ("mysqlnd_result_unbuffered_init" );
1943
1944
1944
- mysqlnd_mempool_save_state (pool );
1945
1945
ret = pool -> get_chunk (pool , alloc_size );
1946
1946
memset (ret , 0 , alloc_size );
1947
1947
@@ -1976,12 +1976,10 @@ mysqlnd_result_buffered_zval_init(MYSQLND_RES * result, const unsigned int field
1976
1976
1977
1977
DBG_ENTER ("mysqlnd_result_buffered_zval_init" );
1978
1978
1979
- mysqlnd_mempool_save_state (pool );
1980
1979
ret = pool -> get_chunk (pool , alloc_size );
1981
1980
memset (ret , 0 , alloc_size );
1982
1981
1983
1982
if (FAIL == mysqlnd_error_info_init (& ret -> error_info , 0 )) {
1984
- mysqlnd_mempool_restore_state (pool );
1985
1983
DBG_RETURN (NULL );
1986
1984
}
1987
1985
@@ -2019,12 +2017,10 @@ mysqlnd_result_buffered_c_init(MYSQLND_RES * result, const unsigned int field_co
2019
2017
2020
2018
DBG_ENTER ("mysqlnd_result_buffered_c_init" );
2021
2019
2022
- mysqlnd_mempool_save_state (pool );
2023
2020
ret = pool -> get_chunk (pool , alloc_size );
2024
2021
memset (ret , 0 , alloc_size );
2025
2022
2026
2023
if (FAIL == mysqlnd_error_info_init (& ret -> error_info , 0 )) {
2027
- mysqlnd_mempool_restore_state (pool );
2028
2024
DBG_RETURN (NULL );
2029
2025
}
2030
2026
0 commit comments