summaryrefslogtreecommitdiffstats
path: root/libc-bottom-half/sources/reallocarray.c
blob: 3e828cc8ba18dab6b4852223a7fa8f58f89a9e1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <errno.h>

void *__reallocarray(void *ptr, size_t nmemb, size_t size) {
    size_t bytes;
    if (__builtin_umull_overflow(nmemb, size, &bytes)) {
        errno = ENOMEM;
        return NULL;
    }
    return realloc(ptr, bytes);
}

void *reallocarray(void *ptr, size_t nmemb, size_t size)
    __attribute__((__weak__, __alias__("__reallocarray")));