Skip to content

Commit e4a7d31

Browse files
committed
Merged allocations
1 parent e176e2d commit e4a7d31

File tree

3 files changed

+8
-30
lines changed

3 files changed

+8
-30
lines changed

ext/mysqlnd/mysqlnd_driver.c

+8-28
Original file line numberDiff line numberDiff line change
@@ -245,31 +245,21 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA
245245
static MYSQLND_PFC *
246246
MYSQLND_METHOD(mysqlnd_object_factory, get_pfc)(const zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
247247
{
248-
size_t pfc_alloc_size = sizeof(MYSQLND_PFC) + mysqlnd_plugin_count() * sizeof(void *);
248+
size_t pfc_alloc_size = ZEND_MM_ALIGNED_SIZE(sizeof(MYSQLND_PFC) + mysqlnd_plugin_count() * sizeof(void *));
249249
size_t pfc_data_alloc_size = sizeof(MYSQLND_PFC_DATA) + mysqlnd_plugin_count() * sizeof(void *);
250-
MYSQLND_PFC * pfc = mnd_pecalloc(1, pfc_alloc_size, persistent);
251-
MYSQLND_PFC_DATA * pfc_data = mnd_pecalloc(1, pfc_data_alloc_size, persistent);
250+
MYSQLND_PFC * pfc = mnd_pecalloc(1, pfc_alloc_size + pfc_data_alloc_size, persistent);
252251

253252
DBG_ENTER("mysqlnd_object_factory::get_pfc");
254253
DBG_INF_FMT("persistent=%u", persistent);
255-
if (pfc && pfc_data) {
256-
pfc->data = pfc_data;
254+
if (pfc) {
255+
pfc->data = (MYSQLND_PFC_DATA*)((char*)pfc + pfc_alloc_size);
257256
pfc->persistent = pfc->data->persistent = persistent;
258257
pfc->data->m = *mysqlnd_pfc_get_methods();
259258

260259
if (PASS != pfc->data->m.init(pfc, stats, error_info)) {
261260
pfc->data->m.dtor(pfc, stats, error_info);
262261
pfc = NULL;
263262
}
264-
} else {
265-
if (pfc_data) {
266-
mnd_pefree(pfc_data, persistent);
267-
pfc_data = NULL;
268-
}
269-
if (pfc) {
270-
mnd_pefree(pfc, persistent);
271-
pfc = NULL;
272-
}
273263
}
274264
DBG_RETURN(pfc);
275265
}
@@ -280,31 +270,21 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_pfc)(const zend_bool persistent, MYSQ
280270
static MYSQLND_VIO *
281271
MYSQLND_METHOD(mysqlnd_object_factory, get_vio)(const zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info)
282272
{
283-
size_t vio_alloc_size = sizeof(MYSQLND_VIO) + mysqlnd_plugin_count() * sizeof(void *);
273+
size_t vio_alloc_size = ZEND_MM_ALIGNED_SIZE(sizeof(MYSQLND_VIO) + mysqlnd_plugin_count() * sizeof(void *));
284274
size_t vio_data_alloc_size = sizeof(MYSQLND_VIO_DATA) + mysqlnd_plugin_count() * sizeof(void *);
285-
MYSQLND_VIO * vio = mnd_pecalloc(1, vio_alloc_size, persistent);
286-
MYSQLND_VIO_DATA * vio_data = mnd_pecalloc(1, vio_data_alloc_size, persistent);
275+
MYSQLND_VIO * vio = mnd_pecalloc(1, vio_alloc_size + vio_data_alloc_size, persistent);
287276

288277
DBG_ENTER("mysqlnd_object_factory::get_vio");
289278
DBG_INF_FMT("persistent=%u", persistent);
290-
if (vio && vio_data) {
291-
vio->data = vio_data;
279+
if (vio) {
280+
vio->data = (MYSQLND_VIO_DATA*)((char*)vio + vio_alloc_size);
292281
vio->persistent = vio->data->persistent = persistent;
293282
vio->data->m = *mysqlnd_vio_get_methods();
294283

295284
if (PASS != vio->data->m.init(vio, stats, error_info)) {
296285
vio->data->m.dtor(vio, stats, error_info);
297286
vio = NULL;
298287
}
299-
} else {
300-
if (vio_data) {
301-
mnd_pefree(vio_data, persistent);
302-
vio_data = NULL;
303-
}
304-
if (vio) {
305-
mnd_pefree(vio, persistent);
306-
vio = NULL;
307-
}
308288
}
309289
DBG_RETURN(vio);
310290
}

ext/mysqlnd/mysqlnd_protocol_frame_codec.c

-1
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,6 @@ MYSQLND_METHOD(mysqlnd_pfc, dtor)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const
441441
pfc->cmd_buffer.buffer = NULL;
442442
}
443443

444-
mnd_pefree(pfc->data, pfc->data->persistent);
445444
mnd_pefree(pfc, pfc->persistent);
446445
}
447446
DBG_VOID_RETURN;

ext/mysqlnd/mysqlnd_vio.c

-1
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,6 @@ MYSQLND_METHOD(mysqlnd_vio, dtor)(MYSQLND_VIO * const vio, MYSQLND_STATS * const
692692
vio->data->m.free_contents(vio);
693693
vio->data->m.close_stream(vio, stats, error_info);
694694

695-
mnd_pefree(vio->data, vio->data->persistent);
696695
mnd_pefree(vio, vio->persistent);
697696
}
698697
DBG_VOID_RETURN;

0 commit comments

Comments
 (0)