| 5047 | } |
| 5048 | |
| 5049 | void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { |
| 5050 | void* mem; |
| 5051 | size_t req = 0, nb = 0; |
| 5052 | mstate ms = (mstate)msp; |
| 5053 | if (!ok_magic(ms)) { |
| 5054 | USAGE_ERROR_ACTION(ms,ms); |
| 5055 | return 0; |
| 5056 | } |
| 5057 | if (n_elements != 0) { |
| 5058 | req = n_elements * elem_size; |
| 5059 | if (((n_elements | elem_size) & ~(size_t)0xffff) && |
| 5060 | (req / n_elements != elem_size)) |
| 5061 | req = MAX_SIZE_T; /* force downstream failure on overflow */ |
| 5062 | } |
| 5063 | if (!PREACTION(ms)) { |
| 5064 | mem = alloc_from_reserved_mem(ms, req, &nb); |
| 5065 | if (mem != NULL) { |
| 5066 | POSTACTION(ms); |
| 5067 | memset(mem, 0, req); |
| 5068 | } else { |
| 5069 | mem = sys_alloc(ms, nb, 1); |
| 5070 | POSTACTION(ms); |
| 5071 | } |
| 5072 | } |
| 5073 | return mem; |
| 5074 | } |
| 5075 | |
| 5076 | static void* internal_mspace_realloc(mspace msp, void* oldmem, size_t bytes, int cpymem) { |
| 5077 | if (oldmem == 0) |
no test coverage detected