JavaDocs clearly state that ByteBuffer.allocateDirect() must throw
IllegalArgumentException if capacity is negative.

2011-03-17  Pekka Enberg  <penb...@kernel.org>

        * native/jni/java-nio/java_nio_VMDirectByteBuffer.c:
        (Java_java_nio_VMDirectByteBuffer_allocate): Check for negative
        capacity.

---
 native/jni/java-nio/java_nio_VMDirectByteBuffer.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/native/jni/java-nio/java_nio_VMDirectByteBuffer.c 
b/native/jni/java-nio/java_nio_VMDirectByteBuffer.c
index bfee7e9..7325c5b 100644
--- a/native/jni/java-nio/java_nio_VMDirectByteBuffer.c
+++ b/native/jni/java-nio/java_nio_VMDirectByteBuffer.c
@@ -51,6 +51,13 @@ Java_java_nio_VMDirectByteBuffer_allocate
 {
   void *buffer;
 
+  if (capacity < 0)
+    {
+      JCL_ThrowException (env, "java/lang/IllegalArgumentException",
+                         "negative capacity");
+      return 0;
+    }
+
   buffer = malloc (capacity);
 
   if (buffer == NULL)
-- 
1.7.1


Reply via email to