JavaDocs clearly state that ByteBuffer.allocateDirect() must throw
IllegalArgumentException if capacity is negative.
2011-03-17 Pekka Enberg <
penberg@...>
* 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