diff options
Diffstat (limited to 'Zend/zend_arena.h')
-rw-r--r-- | Zend/zend_arena.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Zend/zend_arena.h b/Zend/zend_arena.h index ba24e9abce..8988eb4ab5 100644 --- a/Zend/zend_arena.h +++ b/Zend/zend_arena.h @@ -80,8 +80,14 @@ static zend_always_inline void* zend_arena_alloc(zend_arena **arena_ptr, size_t static zend_always_inline void* zend_arena_calloc(zend_arena **arena_ptr, size_t count, size_t unit_size) { - size_t size = zend_safe_address(count, unit_size, 0); - void *ret = zend_arena_alloc(arena_ptr, size); + zend_long overflow; + double d; + size_t size; + void *ret; + + ZEND_SIGNED_MULTIPLY_LONG(unit_size, count, size, d, overflow); + ZEND_ASSERT(overflow == 0); + ret = zend_arena_alloc(arena_ptr, size); memset(ret, 0, size); return ret; } |