changeset 12652:fb71f497860f

8168542: os::realloc should return a valid pointer for input size=0 Reviewed-by: dholmes, cjplummer, dsamersoff, rehn
author stuefe
date Mon, 24 Oct 2016 14:51:16 +0200
parents acf30d622c2a
children 9349d1a6ebc9 06a9716fefe8
files src/share/vm/runtime/os.cpp
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/runtime/os.cpp	Tue Feb 28 10:51:47 2017 -0800
+++ b/src/share/vm/runtime/os.cpp	Mon Oct 24 14:51:16 2016 +0200
@@ -649,6 +649,12 @@
     return NULL;
   }
 
+  if (size == 0) {
+    // return a valid pointer if size is zero
+    // if NULL is returned the calling functions assume out of memory.
+    size = 1;
+  }
+
 #ifndef ASSERT
   NOT_PRODUCT(inc_stat_counter(&num_mallocs, 1));
   NOT_PRODUCT(inc_stat_counter(&alloc_bytes, size));
@@ -669,9 +675,6 @@
   // NMT support
   void* membase = MemTracker::malloc_base(memblock);
   verify_memory(membase);
-  if (size == 0) {
-    return NULL;
-  }
   // always move the block
   void* ptr = os::malloc(size, memflags, stack);
   if (PrintMalloc && tty != NULL) {