| 1623 | } |
| 1624 | |
| 1625 | void* |
| 1626 | rpcalloc(size_t num, size_t size) { |
| 1627 | size_t total; |
| 1628 | #if ENABLE_VALIDATE_ARGS |
| 1629 | #ifdef PLATFORM_WINDOWS |
| 1630 | int err = SizeTMult(num, size, &total); |
| 1631 | if ((err != S_OK) || (total >= MAX_ALLOC_SIZE)) { |
| 1632 | errno = EINVAL; |
| 1633 | return 0; |
| 1634 | } |
| 1635 | #else |
| 1636 | int err = __builtin_umull_overflow(num, size, &total); |
| 1637 | if (err || (total >= MAX_ALLOC_SIZE)) { |
| 1638 | errno = EINVAL; |
| 1639 | return 0; |
| 1640 | } |
| 1641 | #endif |
| 1642 | #else |
| 1643 | total = num * size; |
| 1644 | #endif |
| 1645 | void* ptr = _memory_allocate(total); |
| 1646 | memset(ptr, 0, total); |
| 1647 | return ptr; |
| 1648 | } |
| 1649 | |
| 1650 | void* |
| 1651 | rprealloc(void* ptr, size_t size) { |
no test coverage detected