@@ -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
if (result -> conn ) {
@@ -1928,6 +1927,8 @@ mysqlnd_result_init(const unsigned int field_count)
1928
1927
ret -> field_count = field_count ;
1929
1928
ret -> m = * mysqlnd_result_get_methods ();
1930
1929
1930
+ mysqlnd_mempool_save_state (pool );
1931
+
1931
1932
DBG_RETURN (ret );
1932
1933
}
1933
1934
/* }}} */
@@ -1943,7 +1944,6 @@ mysqlnd_result_unbuffered_init(MYSQLND_RES *result, const unsigned int field_cou
1943
1944
1944
1945
DBG_ENTER ("mysqlnd_result_unbuffered_init" );
1945
1946
1946
- mysqlnd_mempool_save_state (pool );
1947
1947
ret = pool -> get_chunk (pool , alloc_size );
1948
1948
memset (ret , 0 , alloc_size );
1949
1949
@@ -1978,12 +1978,10 @@ mysqlnd_result_buffered_zval_init(MYSQLND_RES * result, const unsigned int field
1978
1978
1979
1979
DBG_ENTER ("mysqlnd_result_buffered_zval_init" );
1980
1980
1981
- mysqlnd_mempool_save_state (pool );
1982
1981
ret = pool -> get_chunk (pool , alloc_size );
1983
1982
memset (ret , 0 , alloc_size );
1984
1983
1985
1984
if (FAIL == mysqlnd_error_info_init (& ret -> error_info , 0 )) {
1986
- mysqlnd_mempool_restore_state (pool );
1987
1985
DBG_RETURN (NULL );
1988
1986
}
1989
1987
@@ -2021,12 +2019,10 @@ mysqlnd_result_buffered_c_init(MYSQLND_RES * result, const unsigned int field_co
2021
2019
2022
2020
DBG_ENTER ("mysqlnd_result_buffered_c_init" );
2023
2021
2024
- mysqlnd_mempool_save_state (pool );
2025
2022
ret = pool -> get_chunk (pool , alloc_size );
2026
2023
memset (ret , 0 , alloc_size );
2027
2024
2028
2025
if (FAIL == mysqlnd_error_info_init (& ret -> error_info , 0 )) {
2029
- mysqlnd_mempool_restore_state (pool );
2030
2026
DBG_RETURN (NULL );
2031
2027
}
2032
2028
0 commit comments