OSDN Git Service

Add tests for zero-sized allocations.
authorElliott Hughes <enh@google.com>
Thu, 11 Feb 2016 04:43:22 +0000 (20:43 -0800)
committerElliott Hughes <enh@google.com>
Thu, 11 Feb 2016 18:33:50 +0000 (10:33 -0800)
POSIX lets us return null and set errno, but that would be annoying and
surprising.

Bug: http://b/27101951

(cherry picked from commit 884f76e3aa081740f7cfe582b11af7446bf77bd9)

Change-Id: Ice4fd3cd427523edc2ca4ba25caf9701c353db47

tests/malloc_test.cpp

index 5af5a6f..d3a9d01 100644 (file)
@@ -391,3 +391,42 @@ TEST(malloc, calloc_usable_size) {
     free(zero_mem);
   }
 }
+
+TEST(malloc, malloc_0) {
+  void* p = malloc(0);
+  ASSERT_TRUE(p != nullptr);
+  free(p);
+}
+
+TEST(malloc, calloc_0_0) {
+  void* p = calloc(0, 0);
+  ASSERT_TRUE(p != nullptr);
+  free(p);
+}
+
+TEST(malloc, calloc_0_1) {
+  void* p = calloc(0, 1);
+  ASSERT_TRUE(p != nullptr);
+  free(p);
+}
+
+TEST(malloc, calloc_1_0) {
+  void* p = calloc(1, 0);
+  ASSERT_TRUE(p != nullptr);
+  free(p);
+}
+
+TEST(malloc, realloc_nullptr_0) {
+  // realloc(nullptr, size) is actually malloc(size).
+  void* p = realloc(nullptr, 0);
+  ASSERT_TRUE(p != nullptr);
+  free(p);
+}
+
+TEST(malloc, realloc_0) {
+  void* p = malloc(1024);
+  ASSERT_TRUE(p != nullptr);
+  // realloc(p, 0) is actually free(p).
+  void* p2 = realloc(p, 0);
+  ASSERT_TRUE(p2 == nullptr);
+}