Skip to content

Commit 4234dd0

Browse files
committed
Remove apc_emalloc and friends
Instead use pemalloc(, 1) etc, which are the PHP provided infallible system allocator functions. The naming apc_emalloc was rather confusing, as it usually implies per-request allocation.
1 parent 1caf53e commit 4234dd0

File tree

5 files changed

+15
-63
lines changed

5 files changed

+15
-63
lines changed

apc.c

-39
Original file line numberDiff line numberDiff line change
@@ -34,45 +34,6 @@
3434
#include "apc_globals.h"
3535
#include "php.h"
3636

37-
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
38-
# include "ext/pcre/php_pcre.h"
39-
# include "zend_smart_str.h"
40-
#endif
41-
42-
/* {{{ memory allocation wrappers */
43-
44-
PHP_APCU_API void* apc_emalloc(size_t n)
45-
{
46-
void* p = malloc(n);
47-
if (p == NULL) {
48-
apc_error("apc_emalloc: malloc failed to allocate %zu bytes:", n);
49-
return NULL;
50-
}
51-
return p;
52-
}
53-
54-
PHP_APCU_API void* apc_erealloc(void* p, size_t n)
55-
{
56-
void *new;
57-
new = realloc(p, n);
58-
if (new == NULL) {
59-
apc_error("apc_erealloc: realloc failed to allocate %zu bytes:", n);
60-
return NULL;
61-
}
62-
return new;
63-
}
64-
65-
PHP_APCU_API void apc_efree(void* p)
66-
{
67-
if (p == NULL) {
68-
apc_error("apc_efree: attempt to free null pointer");
69-
return;
70-
}
71-
free(p);
72-
}
73-
74-
/* }}} */
75-
7637
/* {{{ console display functions */
7738
#define APC_PRINT_FUNCTION(name, verbosity) \
7839
void apc_##name(const char *format, ...) \

apc.h

-9
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,6 @@
6767
#include "php.h"
6868
#include "main/php_streams.h"
6969

70-
/* typedefs for extensible memory allocators */
71-
typedef void* (*apc_malloc_t)(size_t);
72-
typedef void (*apc_free_t) (void *);
73-
74-
/* wrappers for memory allocation routines */
75-
PHP_APCU_API void* apc_emalloc(size_t n);
76-
PHP_APCU_API void* apc_erealloc(void* p, size_t n);
77-
PHP_APCU_API void apc_efree(void* p);
78-
7970
/* console display functions */
8071
PHP_APCU_API void apc_error(const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 1, 2);
8172
PHP_APCU_API void apc_warning(const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 1, 2);

apc_cache.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ PHP_APCU_API apc_cache_t* apc_cache_create(apc_sma_t* sma, apc_serializer_t* ser
277277
nslots = make_prime(size_hint > 0 ? size_hint : 2000);
278278

279279
/* allocate pointer by normal means */
280-
cache = (apc_cache_t*) apc_emalloc(sizeof(apc_cache_t));
280+
cache = (apc_cache_t*) pemalloc(sizeof(apc_cache_t), 1);
281281

282282
if (!cache) {
283283
apc_error("Unable to allocate memory for cache structures. (Perhaps your memory_limit isn't large enough?). ");
@@ -666,7 +666,7 @@ PHP_APCU_API void apc_cache_destroy(apc_cache_t* cache)
666666
children to freeze. It might be because the segment is shared between
667667
several processes. To figure out is how to free this safely. */
668668
/*apc_sma_free(cache->shmaddr);*/
669-
apc_efree(cache);
669+
free(cache);
670670
}
671671
/* }}} */
672672

apc_signal.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ static int apc_register_signal(int signo, void (*handler)(int, siginfo_t*, void*
124124
p_sig.siginfo = ((sa.sa_flags & SA_SIGINFO) == SA_SIGINFO);
125125
p_sig.handler = (void *)sa.sa_handler;
126126

127-
apc_signal_info.prev = (apc_signal_entry_t **)apc_erealloc(apc_signal_info.prev, (apc_signal_info.installed+1)*sizeof(apc_signal_entry_t *));
128-
apc_signal_info.prev[apc_signal_info.installed] = (apc_signal_entry_t *)apc_emalloc(sizeof(apc_signal_entry_t));
127+
apc_signal_info.prev = (apc_signal_entry_t **) perealloc(apc_signal_info.prev, (apc_signal_info.installed+1)*sizeof(apc_signal_entry_t *), 1);
128+
apc_signal_info.prev[apc_signal_info.installed] = (apc_signal_entry_t *) pemalloc(sizeof(apc_signal_entry_t), 1);
129129
*apc_signal_info.prev[apc_signal_info.installed++] = p_sig;
130130
} else {
131131
/* inherit flags and mask if already set */
@@ -201,10 +201,10 @@ void apc_shutdown_signals()
201201
{
202202
int i=0;
203203
if (apc_signal_info.installed > 0) {
204-
for (i=0; (i < apc_signal_info.installed); i++) {
205-
apc_efree(apc_signal_info.prev[i]);
204+
for (i=0; i < apc_signal_info.installed; i++) {
205+
free(apc_signal_info.prev[i]);
206206
}
207-
apc_efree(apc_signal_info.prev);
207+
free(apc_signal_info.prev);
208208
apc_signal_info.installed = 0; /* just in case */
209209
}
210210
}

apc_sma.c

+8-8
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ PHP_APCU_API void apc_sma_api_init(apc_sma_t* sma, void** data, apc_sma_expunge_
295295

296296
sma->size = size > 0 ? size : DEFAULT_SEGSIZE;
297297

298-
sma->segs = (apc_segment_t*) apc_emalloc((sma->num * sizeof(apc_segment_t)));
298+
sma->segs = (apc_segment_t*) pemalloc(sma->num * sizeof(apc_segment_t), 1);
299299

300300
for (i = 0; i < sma->num; i++) {
301301
sma_header_t* header;
@@ -371,7 +371,7 @@ PHP_APCU_API void apc_sma_api_cleanup(apc_sma_t* sma) {
371371
}
372372
sma->initialized = 0;
373373

374-
apc_efree(sma->segs);
374+
free(sma->segs);
375375
}
376376

377377
PHP_APCU_API void* apc_sma_api_malloc_ex(apc_sma_t* sma, zend_ulong n, zend_ulong fragment, zend_ulong* allocated) {
@@ -563,11 +563,11 @@ PHP_APCU_API apc_sma_info_t* apc_sma_api_info(apc_sma_t* sma, zend_bool limited)
563563
return NULL;
564564
}
565565

566-
info = (apc_sma_info_t*) apc_emalloc(sizeof(apc_sma_info_t));
566+
info = (apc_sma_info_t*) pemalloc(sizeof(apc_sma_info_t), 1);
567567
info->num_seg = sma->num;
568568
info->seg_size = sma->size - (ALIGNWORD(sizeof(sma_header_t)) + ALIGNWORD(sizeof(block_t)) + ALIGNWORD(sizeof(block_t)));
569569

570-
info->list = apc_emalloc(info->num_seg * sizeof(apc_sma_link_t*));
570+
info->list = pemalloc(info->num_seg * sizeof(apc_sma_link_t*), 1);
571571
for (i = 0; i < sma->num; i++) {
572572
info->list[i] = NULL;
573573
}
@@ -590,7 +590,7 @@ PHP_APCU_API apc_sma_info_t* apc_sma_api_info(apc_sma_t* sma, zend_bool limited)
590590

591591
CHECK_CANARY(cur);
592592

593-
*link = apc_emalloc(sizeof(apc_sma_link_t));
593+
*link = pemalloc(sizeof(apc_sma_link_t), 1);
594594
(*link)->size = cur->size;
595595
(*link)->offset = prv->fnext;
596596
(*link)->next = NULL;
@@ -612,11 +612,11 @@ PHP_APCU_API void apc_sma_api_free_info(apc_sma_t* sma, apc_sma_info_t* info) {
612612
while (p) {
613613
apc_sma_link_t* q = p;
614614
p = p->next;
615-
apc_efree(q);
615+
free(q);
616616
}
617617
}
618-
apc_efree(info->list);
619-
apc_efree(info);
618+
free(info->list);
619+
free(info);
620620
}
621621

622622
PHP_APCU_API zend_ulong apc_sma_api_get_avail_mem(apc_sma_t* sma) {

0 commit comments

Comments
 (0)