diff options
Diffstat (limited to 'Zend/zend_alloc.c')
-rw-r--r-- | Zend/zend_alloc.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 05a53ba97b..4d5f2dcdc1 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2792,6 +2792,37 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void #endif } +static ZEND_COLD ZEND_NORETURN void zend_out_of_memory(void) +{ + fprintf(stderr, "Out of memory\n"); + exit(1); +} + +ZEND_API void * __zend_malloc(size_t len) +{ + void *tmp = malloc(len); + if (EXPECTED(tmp)) { + return tmp; + } + zend_out_of_memory(); +} + +ZEND_API void * __zend_calloc(size_t nmemb, size_t len) +{ + void *tmp = _safe_malloc(nmemb, len, 0); + memset(tmp, 0, nmemb * len); + return tmp; +} + +ZEND_API void * __zend_realloc(void *p, size_t len) +{ + p = realloc(p, len); + if (EXPECTED(p)) { + return p; + } + zend_out_of_memory(); +} + /* * Local variables: * tab-width: 4 |