Skip to content

Commit 04c45ed

Browse files
committed
Merge branch 'PHP-7.4'
2 parents 78a890e + c25104b commit 04c45ed

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

ext/mysqlnd/mysqlnd_block_alloc.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ PHPAPI void
134134
mysqlnd_mempool_restore_state(MYSQLND_MEMORY_POOL * pool)
135135
{
136136
DBG_ENTER("mysqlnd_mempool_restore_state");
137+
#if ZEND_DEBUG
138+
ZEND_ASSERT(pool->checkpoint);
139+
#endif
137140
if (pool->checkpoint) {
138141
zend_arena_release(&pool->arena, pool->checkpoint);
139142
pool->last = NULL;

ext/mysqlnd/mysqlnd_result.c

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,6 @@ MYSQLND_METHOD(mysqlnd_result_unbuffered, free_result)(MYSQLND_RES_UNBUFFERED *
190190
result->row_packet = NULL;
191191
}
192192

193-
mysqlnd_mempool_restore_state(result->result_set_memory_pool);
194-
195193
DBG_VOID_RETURN;
196194
}
197195
/* }}} */
@@ -261,8 +259,6 @@ MYSQLND_METHOD(mysqlnd_result_buffered, free_result)(MYSQLND_RES_BUFFERED * cons
261259
set->row_buffers = NULL;
262260
}
263261

264-
mysqlnd_mempool_restore_state(set->result_set_memory_pool);
265-
266262
DBG_VOID_RETURN;
267263
}
268264
/* }}} */
@@ -275,6 +271,12 @@ MYSQLND_METHOD(mysqlnd_res, free_result_buffers)(MYSQLND_RES * result)
275271
DBG_ENTER("mysqlnd_res::free_result_buffers");
276272
DBG_INF_FMT("%s", result->unbuf? "unbuffered":(result->stored_data? "buffered":"unknown"));
277273

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+
278280
if (result->unbuf) {
279281
result->unbuf->m.free_result(result->unbuf, result->conn? result->conn->stats : NULL);
280282
result->unbuf = NULL;
@@ -283,6 +285,9 @@ MYSQLND_METHOD(mysqlnd_res, free_result_buffers)(MYSQLND_RES * result)
283285
result->stored_data = NULL;
284286
}
285287

288+
mysqlnd_mempool_restore_state(result->memory_pool);
289+
mysqlnd_mempool_save_state(result->memory_pool);
290+
286291
DBG_VOID_RETURN;
287292
}
288293
/* }}} */
@@ -294,12 +299,6 @@ void MYSQLND_METHOD(mysqlnd_res, free_result_contents_internal)(MYSQLND_RES * re
294299
{
295300
DBG_ENTER("mysqlnd_res::free_result_contents_internal");
296301

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-
303302
result->m.free_result_buffers(result);
304303

305304
if (result->conn) {
@@ -1928,6 +1927,8 @@ mysqlnd_result_init(const unsigned int field_count)
19281927
ret->field_count = field_count;
19291928
ret->m = *mysqlnd_result_get_methods();
19301929

1930+
mysqlnd_mempool_save_state(pool);
1931+
19311932
DBG_RETURN(ret);
19321933
}
19331934
/* }}} */
@@ -1943,7 +1944,6 @@ mysqlnd_result_unbuffered_init(MYSQLND_RES *result, const unsigned int field_cou
19431944

19441945
DBG_ENTER("mysqlnd_result_unbuffered_init");
19451946

1946-
mysqlnd_mempool_save_state(pool);
19471947
ret = pool->get_chunk(pool, alloc_size);
19481948
memset(ret, 0, alloc_size);
19491949

@@ -1978,12 +1978,10 @@ mysqlnd_result_buffered_zval_init(MYSQLND_RES * result, const unsigned int field
19781978

19791979
DBG_ENTER("mysqlnd_result_buffered_zval_init");
19801980

1981-
mysqlnd_mempool_save_state(pool);
19821981
ret = pool->get_chunk(pool, alloc_size);
19831982
memset(ret, 0, alloc_size);
19841983

19851984
if (FAIL == mysqlnd_error_info_init(&ret->error_info, 0)) {
1986-
mysqlnd_mempool_restore_state(pool);
19871985
DBG_RETURN(NULL);
19881986
}
19891987

@@ -2021,12 +2019,10 @@ mysqlnd_result_buffered_c_init(MYSQLND_RES * result, const unsigned int field_co
20212019

20222020
DBG_ENTER("mysqlnd_result_buffered_c_init");
20232021

2024-
mysqlnd_mempool_save_state(pool);
20252022
ret = pool->get_chunk(pool, alloc_size);
20262023
memset(ret, 0, alloc_size);
20272024

20282025
if (FAIL == mysqlnd_error_info_init(&ret->error_info, 0)) {
2029-
mysqlnd_mempool_restore_state(pool);
20302026
DBG_RETURN(NULL);
20312027
}
20322028

0 commit comments

Comments
 (0)