From 63abb4ac9b983c1244037576f060d1ec6a762444 Mon Sep 17 00:00:00 2001 From: Colin Alworth Date: Fri, 26 Aug 2022 16:05:05 -0500 Subject: [PATCH 1/2] Support creation of zero-sized primitive Java arrays Fixes #84 --- src/main/c/jpy_jtype.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/c/jpy_jtype.c b/src/main/c/jpy_jtype.c index 9484e20b..f6f7ed44 100644 --- a/src/main/c/jpy_jtype.c +++ b/src/main/c/jpy_jtype.c @@ -1938,11 +1938,11 @@ int JType_ConvertVarArgPyArgToJObjectArg(JNIEnv* jenv, JPy_ParamDescriptor* para } itemCount = pyBuffer->len / pyBuffer->itemsize; - if (itemCount <= 0) { + if (itemCount < 0) { PyBuffer_Release(pyBuffer); PyMem_Del(pyBuffer); JPy_DECREF(pyArg); - PyErr_Format(PyExc_ValueError, "illegal buffer argument: not a positive item count: %ld", itemCount); + PyErr_Format(PyExc_ValueError, "illegal buffer argument: count must be non-negative: %ld", itemCount); return -1; } @@ -2281,10 +2281,10 @@ int JType_ConvertPyArgToJObjectArg(JNIEnv* jenv, JPy_ParamDescriptor* paramDescr } itemCount = pyBuffer->len / pyBuffer->itemsize; - if (itemCount <= 0) { + if (itemCount < 0) { PyBuffer_Release(pyBuffer); PyMem_Del(pyBuffer); - PyErr_Format(PyExc_ValueError, "illegal buffer argument: not a positive item count: %ld", itemCount); + PyErr_Format(PyExc_ValueError, "illegal buffer argument: count must be non-negative: %ld", itemCount); return -1; } From 3a83533ca2d0cfa3660ba4b198358d7d26b07d6d Mon Sep 17 00:00:00 2001 From: Colin Alworth Date: Sun, 28 Aug 2022 18:34:25 -0500 Subject: [PATCH 2/2] Removing check entirely after review discussion --- src/main/c/jpy_jtype.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/main/c/jpy_jtype.c b/src/main/c/jpy_jtype.c index f6f7ed44..dd9e5d67 100644 --- a/src/main/c/jpy_jtype.c +++ b/src/main/c/jpy_jtype.c @@ -1938,13 +1938,6 @@ int JType_ConvertVarArgPyArgToJObjectArg(JNIEnv* jenv, JPy_ParamDescriptor* para } itemCount = pyBuffer->len / pyBuffer->itemsize; - if (itemCount < 0) { - PyBuffer_Release(pyBuffer); - PyMem_Del(pyBuffer); - JPy_DECREF(pyArg); - PyErr_Format(PyExc_ValueError, "illegal buffer argument: count must be non-negative: %ld", itemCount); - return -1; - } if (paramComponentType == JPy_JBoolean) { jArray = (*jenv)->NewBooleanArray(jenv, itemCount); @@ -2281,12 +2274,6 @@ int JType_ConvertPyArgToJObjectArg(JNIEnv* jenv, JPy_ParamDescriptor* paramDescr } itemCount = pyBuffer->len / pyBuffer->itemsize; - if (itemCount < 0) { - PyBuffer_Release(pyBuffer); - PyMem_Del(pyBuffer); - PyErr_Format(PyExc_ValueError, "illegal buffer argument: count must be non-negative: %ld", itemCount); - return -1; - } if (paramComponentType == JPy_JBoolean) { jArray = (*jenv)->NewBooleanArray(jenv, itemCount);