@@ -138,6 +138,7 @@ extern void __memory_allocation_error(const char *filename, uint32_t line) __nor
extern void xfree(const void *ptr);
extern void *xmalloc(size_t size);
+extern void *xmalloc_array(size_t nmemb, size_t size);
extern void *xrealloc(void *ptr, size_t size);
extern void *xzalloc(size_t size);
extern char *xstrdup(const char *s);
@@ -39,6 +39,17 @@ void *xmalloc(size_t size)
return ptr;
}
+void *xmalloc_array(size_t nmemb, size_t size)
+{
+ assert(nmemb != 0);
+ assert(size != 0);
+
+ if (nmemb > SIZE_MAX / size)
+ memory_allocation_error();
+
+ return xmalloc(nmemb * size);
+}
+
void *xrealloc(void *ptr, size_t size)
{
ptr = realloc(ptr, size);
This will be used for allocating memory for arrays in heap instead of keeping them on stack. Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name> --- include/utils.h | 1 + src/utils.c | 11 +++++++++++ 2 files changed, 12 insertions(+)