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