| 4784 | } |
| 4785 | |
| 4786 | void* dlcalloc(size_t n_elements, size_t elem_size) { |
| 4787 | void* mem; |
| 4788 | size_t req = 0; |
| 4789 | if (n_elements != 0) { |
| 4790 | req = n_elements * elem_size; |
| 4791 | if (((n_elements | elem_size) & ~(size_t)0xffff) && |
| 4792 | (req / n_elements != elem_size)) |
| 4793 | req = MAX_SIZE_T; /* force downstream failure on overflow */ |
| 4794 | } |
| 4795 | mem = dlmalloc(req); |
| 4796 | if (mem != 0 && calloc_must_clear(mem2chunk(mem))) |
| 4797 | memset(mem, 0, req); |
| 4798 | return mem; |
| 4799 | } |
| 4800 | |
| 4801 | #endif /* !ONLY_MSPACES */ |
| 4802 |