#include "libc/str/str.h"
#include "third_party/dlmalloc/dlmalloc.h"

void *dlcalloc(size_t n_elements, size_t elem_size) {
  void *mem;
  size_t req;
  if (__builtin_mul_overflow(n_elements, elem_size, &req)) req = -1;
  mem = dlmalloc(req);
  if (mem != 0 && calloc_must_clear(mem2chunk(mem))) memset(mem, 0, req);
  return mem;
}