Loading...
tests/malloc_empty.c /dev/null libmalloc-715.120.13
--- /dev/null
+++ libmalloc/libmalloc-715.120.13/tests/malloc_empty.c
@@ -0,0 +1,39 @@
+#include <stdlib.h>
+#include <darwintest.h>
+#include <malloc_private.h>
+
+T_GLOBAL_META(T_META_RUN_CONCURRENTLY(true));
+
+T_DECL(empty_malloc_valid, "Zero size allocation returns valid pointer")
+{
+	void *ptr;
+
+	ptr = malloc(0);
+	T_ASSERT_NOTNULL(ptr, "Empty malloc returns pointer");
+	free(ptr);
+
+	ptr = calloc(1, 0);
+	T_ASSERT_NOTNULL(ptr, "Empty calloc returns pointer");
+	free(ptr);
+
+	ptr = realloc(NULL, 0);
+	T_ASSERT_NOTNULL(ptr, "Empty realloc returns pointer");
+	free(ptr);
+
+	ptr = aligned_alloc(sizeof(void *), 0);
+	T_ASSERT_NOTNULL(ptr, "Empty aligned_alloc returns pointer");
+	free(ptr);
+
+	ptr = reallocf(NULL, 0);
+	T_ASSERT_NOTNULL(ptr, "Empty reallocf returns pointer");
+	free(ptr);
+
+	ptr = valloc(0);
+	T_ASSERT_NOTNULL(ptr, "Empty valloc returns pointer");
+	free(ptr);
+
+	int ret = posix_memalign(&ptr, sizeof(void *), 0);
+	T_ASSERT_EQ(ret, 0, "posix_memalign returns success");
+	T_ASSERT_NOTNULL(ptr, "Empty posix_memalign returns pointer");
+	free(ptr);
+}