mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-13 16:47:58 +08:00
Cleans up Java JNI warnings and add java to -Werror checks (#2383)
This commit is contained in:
parent
79bb60c3f6
commit
40324e0c31
6
.github/workflows/main.yml
vendored
6
.github/workflows/main.yml
vendored
@ -319,11 +319,12 @@ jobs:
|
||||
cmake: "Debug"
|
||||
autotools: "debug"
|
||||
|
||||
# Debug -Werror
|
||||
- name: "Ubuntu gcc Autotools -Werror (build only)"
|
||||
os: ubuntu-latest
|
||||
cpp: enable
|
||||
fortran: disable
|
||||
java: disable
|
||||
java: enable
|
||||
parallel: disable
|
||||
mirror_vfd: disable
|
||||
direct_vfd: enable
|
||||
@ -342,11 +343,12 @@ jobs:
|
||||
cmake: "Debug"
|
||||
autotools: "debug"
|
||||
|
||||
# Production/Release -Werror
|
||||
- name: "Ubuntu gcc Autotools -Werror (build only)"
|
||||
os: ubuntu-latest
|
||||
cpp: enable
|
||||
fortran: disable
|
||||
java: disable
|
||||
java: enable
|
||||
parallel: disable
|
||||
mirror_vfd: disable
|
||||
direct_vfd: enable
|
||||
|
@ -1658,16 +1658,24 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1GHEAP_1SIZE(JNIEnv *env, jcla
|
||||
{
|
||||
return (hsize_t)(3 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1)));
|
||||
}
|
||||
H5_GCC_CLANG_DIAG_OFF("sign-conversion")
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1LHEAP_1SIZE(JNIEnv *env, jclass cls)
|
||||
{
|
||||
/* XXX: BADNESS! - This value cannot fit into a jlong!
|
||||
*
|
||||
* For now, we're going to ignore these values since the multi VFD is
|
||||
* scheduled for removal in HDF5 2.0.
|
||||
*/
|
||||
return (hsize_t)(4 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1)));
|
||||
}
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1OHDR_1SIZE(JNIEnv *env, jclass cls)
|
||||
{
|
||||
/* XXX: BADNESS! - This value cannot fit into a jlong! */
|
||||
return (hsize_t)(5 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1)));
|
||||
}
|
||||
H5_GCC_CLANG_DIAG_ON("sign-conversion")
|
||||
|
||||
/* Symbols defined for compatibility with previous versions of the HDF5 API.
|
||||
*
|
||||
|
@ -161,7 +161,7 @@ Java_hdf_hdf5lib_H5_H5Aread(JNIEnv *env, jclass clss, jlong attr_id, jlong mem_t
|
||||
hid_t sid = H5I_INVALID_HID;
|
||||
size_t typeSize;
|
||||
H5T_class_t type_class;
|
||||
jsize vl_array_len; // Only used by vl_data_class types
|
||||
jsize vl_array_len = 0; // Only used by vl_data_class types
|
||||
htri_t vl_data_class;
|
||||
herr_t status = FAIL;
|
||||
|
||||
@ -248,7 +248,7 @@ Java_hdf_hdf5lib_H5_H5Awrite(JNIEnv *env, jclass clss, jlong attr_id, jlong mem_
|
||||
hid_t sid = H5I_INVALID_HID;
|
||||
size_t typeSize;
|
||||
H5T_class_t type_class;
|
||||
jsize vl_array_len; // Only used by vl_data_class types
|
||||
jsize vl_array_len = 0; // Only used by vl_data_class types
|
||||
htri_t vl_data_class;
|
||||
herr_t status = FAIL;
|
||||
|
||||
@ -1107,7 +1107,6 @@ done:
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5AreadVL(JNIEnv *env, jclass clss, jlong attr_id, jlong mem_type_id, jobjectArray buf)
|
||||
{
|
||||
jboolean readBufIsCopy;
|
||||
jbyte *readBuf = NULL;
|
||||
hsize_t dims[H5S_MAX_RANK];
|
||||
hid_t sid = H5I_INVALID_HID;
|
||||
@ -1174,7 +1173,6 @@ done:
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5AwriteVL(JNIEnv *env, jclass clss, jlong attr_id, jlong mem_type_id, jobjectArray buf)
|
||||
{
|
||||
jboolean writeBufIsCopy;
|
||||
jbyte *writeBuf = NULL;
|
||||
hsize_t dims[H5S_MAX_RANK];
|
||||
hid_t sid = H5I_INVALID_HID;
|
||||
@ -1632,21 +1630,24 @@ H5AwriteVL_asstr(JNIEnv *env, hid_t aid, hid_t tid, jobjectArray buf)
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* length = ENVPTR->GetStringUTFLength(ENVONLY, jstr);
|
||||
* CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
*/
|
||||
|
||||
PIN_JAVA_STRING(ENVONLY, jstr, utf8, NULL, "H5AwriteVL_asstr: failed to pin string buffer");
|
||||
|
||||
/*
|
||||
* TODO: If the string isn't a copy, we should probably make
|
||||
* one before destroying it with h5str_convert.
|
||||
* Make a copy of the string since h5str_convert uses strtok.
|
||||
*/
|
||||
char *utf8_copy = NULL;
|
||||
|
||||
if (!h5str_convert(ENVONLY, (char **)&utf8, aid, tid, &(((char *)writeBuf)[i * typeSize]), 0))
|
||||
jsize length = ENVPTR->GetStringUTFLength(ENVONLY, jstr);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
|
||||
if (NULL == (utf8_copy = HDstrndup(utf8, (size_t)length)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
if (!h5str_convert(ENVONLY, &utf8_copy, aid, tid, &(((char *)writeBuf)[i * typeSize]), 0))
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
|
||||
HDfree(utf8_copy);
|
||||
|
||||
UNPIN_JAVA_STRING(ENVONLY, jstr, utf8);
|
||||
utf8 = NULL;
|
||||
|
||||
|
@ -1134,7 +1134,6 @@ JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5DreadVL(JNIEnv *env, jclass clss, jlong dataset_id, jlong mem_type_id,
|
||||
jlong mem_space_id, jlong file_space_id, jlong xfer_plist_id, jobjectArray buf)
|
||||
{
|
||||
jboolean readBufIsCopy;
|
||||
jbyte *readBuf = NULL;
|
||||
size_t typeSize;
|
||||
H5T_class_t type_class;
|
||||
@ -1195,7 +1194,6 @@ JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5DwriteVL(JNIEnv *env, jclass clss, jlong dataset_id, jlong mem_type_id,
|
||||
jlong mem_space_id, jlong file_space_id, jlong xfer_plist_id, jobjectArray buf)
|
||||
{
|
||||
jboolean writeBufIsCopy;
|
||||
jbyte *writeBuf = NULL;
|
||||
size_t typeSize;
|
||||
H5T_class_t type_class;
|
||||
@ -1680,21 +1678,24 @@ H5DwriteVL_asstr(JNIEnv *env, hid_t did, hid_t tid, hid_t mem_sid, hid_t file_si
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* length = ENVPTR->GetStringUTFLength(ENVONLY, jstr);
|
||||
* CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
*/
|
||||
|
||||
PIN_JAVA_STRING(ENVONLY, jstr, utf8, NULL, "H5DwriteVL_asstr: failed to pin string buffer");
|
||||
|
||||
/*
|
||||
* TODO: If the string isn't a copy, we should probably make
|
||||
* one before destroying it with h5str_convert.
|
||||
* Make a copy of the string since h5str_convert uses strtok.
|
||||
*/
|
||||
char *utf8_copy = NULL;
|
||||
|
||||
if (!h5str_convert(ENVONLY, (char **)&utf8, did, tid, &(((char *)writeBuf)[i * typeSize]), 0))
|
||||
jsize length = ENVPTR->GetStringUTFLength(ENVONLY, jstr);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
|
||||
if (NULL == (utf8_copy = HDstrndup(utf8, (size_t)length)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
if (!h5str_convert(ENVONLY, &utf8_copy, did, tid, &(((char *)writeBuf)[i * typeSize]), 0))
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
|
||||
HDfree(utf8_copy);
|
||||
|
||||
UNPIN_JAVA_STRING(ENVONLY, jstr, utf8);
|
||||
utf8 = NULL;
|
||||
|
||||
|
@ -277,7 +277,7 @@ done:
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Lget_1info(JNIEnv *env, jclass clss, jlong loc_id, jstring name, jlong access_id)
|
||||
{
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, 0};
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, {{{0}}}};
|
||||
const char *linkName = NULL;
|
||||
jvalue args[5];
|
||||
herr_t status = FAIL;
|
||||
@ -340,7 +340,7 @@ JNIEXPORT jobject JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Lget_1info_1by_1idx(JNIEnv *env, jclass clss, jlong loc_id, jstring name,
|
||||
jint index_field, jint order, jlong link_n, jlong access_id)
|
||||
{
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, 0};
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, {{{0}}}};
|
||||
const char *groupName = NULL;
|
||||
jvalue args[5];
|
||||
herr_t status = FAIL;
|
||||
@ -454,7 +454,7 @@ JNIEXPORT jint JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Lget_1value(JNIEnv *env, jclass clss, jlong loc_id, jstring name,
|
||||
jobjectArray link_value, jlong access_id)
|
||||
{
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, 0};
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, {{{0}}}};
|
||||
const char *file_name = NULL;
|
||||
const char *obj_name = NULL;
|
||||
const char *linkName = NULL;
|
||||
@ -544,7 +544,7 @@ Java_hdf_hdf5lib_H5_H5Lget_1value_1by_1idx(JNIEnv *env, jclass clss, jlong loc_i
|
||||
jint index_field, jint order, jlong link_n,
|
||||
jobjectArray link_value, jlong access_id)
|
||||
{
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, 0};
|
||||
H5L_info2_t infobuf = {H5L_TYPE_ERROR, FALSE, -1, H5T_CSET_ERROR, {{{0}}}};
|
||||
const char *file_name = NULL;
|
||||
const char *obj_name = NULL;
|
||||
const char *grpName = NULL;
|
||||
|
@ -80,6 +80,8 @@ Java_hdf_hdf5lib_H5_H5Pget_1chunk_1cache(JNIEnv *env, jclass clss, jlong dapl, j
|
||||
if (NULL != rdcc_nbytes)
|
||||
PIN_LONG_ARRAY(ENVONLY, rdcc_nbytes, nbytesArray, &isCopy,
|
||||
"H5Pget_chunk_cache: nbytesArray array not pinned");
|
||||
if (NULL == nbytesArray)
|
||||
H5_NULL_ARGUMENT_ERROR(ENVONLY, "nbytesArray should not be NULL after pinning");
|
||||
|
||||
{
|
||||
/* direct cast (size_t *)variable fails on 32-bit environment */
|
||||
|
@ -1252,6 +1252,8 @@ Java_hdf_hdf5lib_H5_H5Pget_1cache(JNIEnv *env, jclass clss, jlong plist, jintArr
|
||||
if (NULL != rdcc_nbytes)
|
||||
PIN_LONG_ARRAY(ENVONLY, rdcc_nbytes, nbytesArray, &isCopy,
|
||||
"H5Pget_cache: nbytesArray array not pinned");
|
||||
if (NULL == nbytesArray)
|
||||
H5_NULL_ARGUMENT_ERROR(ENVONLY, "nbytesArray should not be NULL after pinning");
|
||||
|
||||
{
|
||||
/* direct cast (size_t *)variable fails on 32-bit environment */
|
||||
|
@ -77,8 +77,7 @@ static int render_bin_output_region_data_points(FILE *stream, hid_t region_sp
|
||||
hsize_t *ptdata);
|
||||
static int render_bin_output_region_points(FILE *stream, hid_t region_space, hid_t region_id,
|
||||
hid_t container);
|
||||
jobject translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class_t type_class,
|
||||
void *raw_buf);
|
||||
jobject translate_atomic_rbuf(JNIEnv *env, jlong mem_type_id, H5T_class_t type_class, void *raw_buf);
|
||||
void translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_t type_class,
|
||||
void *raw_buf);
|
||||
|
||||
@ -439,40 +438,43 @@ h5str_convert(JNIEnv *env, char **in_str, hid_t container, hid_t tid, void *out_
|
||||
break;
|
||||
|
||||
case H5T_ENUM: {
|
||||
void *value = NULL;
|
||||
void *value = NULL;
|
||||
unsigned char tmp_uchar = 0;
|
||||
unsigned short tmp_ushort = 0;
|
||||
unsigned int tmp_uint = 0;
|
||||
#if H5_SIZEOF_LONG != H5_SIZEOF_INT
|
||||
unsigned long tmp_ulong = 0;
|
||||
#endif
|
||||
#if H5_SIZEOF_LONG_LONG != H5_SIZEOF_LONG
|
||||
unsigned long long tmp_ullong = 0;
|
||||
#endif
|
||||
|
||||
token = HDstrtok(this_str, delimiter);
|
||||
|
||||
switch (typeSize) {
|
||||
case sizeof(char): {
|
||||
unsigned char tmp_uchar = 0;
|
||||
value = &tmp_uchar;
|
||||
value = &tmp_uchar;
|
||||
break;
|
||||
}
|
||||
|
||||
case sizeof(short): {
|
||||
unsigned short tmp_ushort = 0;
|
||||
value = &tmp_ushort;
|
||||
value = &tmp_ushort;
|
||||
break;
|
||||
}
|
||||
#if H5_SIZEOF_LONG != H5_SIZEOF_INT
|
||||
case sizeof(long): {
|
||||
unsigned long tmp_ulong = 0;
|
||||
value = &tmp_ulong;
|
||||
value = &tmp_ulong;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if H5_SIZEOF_LONG_LONG != H5_SIZEOF_LONG
|
||||
case sizeof(long long): {
|
||||
unsigned long long tmp_ullong = 0;
|
||||
value = &tmp_ullong;
|
||||
value = &tmp_ullong;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
default: {
|
||||
unsigned int tmp_uint = 0;
|
||||
value = &tmp_uint;
|
||||
value = &tmp_uint;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -4045,16 +4047,14 @@ done:
|
||||
} /* end Java_hdf_hdf5lib_H5_H5export_1attribute */
|
||||
|
||||
jobject
|
||||
translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class_t type_class, void *raw_buf)
|
||||
translate_atomic_rbuf(JNIEnv *env, jlong mem_type_id, H5T_class_t type_class, void *raw_buf)
|
||||
{
|
||||
jobject jobj = NULL;
|
||||
hid_t memb = H5I_INVALID_HID;
|
||||
int ret_buflen = -1;
|
||||
jboolean found_jList = JNI_TRUE;
|
||||
jobjectArray jList = NULL;
|
||||
jobject jobj = NULL;
|
||||
hid_t memb = H5I_INVALID_HID;
|
||||
jobjectArray jList = NULL;
|
||||
H5T_class_t vlClass;
|
||||
size_t vlSize;
|
||||
size_t i, x;
|
||||
size_t i;
|
||||
size_t typeSize;
|
||||
// raw_buf is normally bytes except when used for variable length strings
|
||||
char *char_buf = (char *)raw_buf;
|
||||
@ -4062,7 +4062,6 @@ translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class
|
||||
/* retrieve the java.util.ArrayList interface class */
|
||||
jclass arrCList = ENVPTR->FindClass(ENVONLY, "java/util/ArrayList");
|
||||
jmethodID arrListMethod = ENVPTR->GetMethodID(ENVONLY, arrCList, "<init>", "(I)V");
|
||||
jmethodID arrAddMethod = ENVPTR->GetMethodID(ENVONLY, arrCList, "add", "(Ljava/lang/Object;)Z");
|
||||
|
||||
/* Cache class types */
|
||||
/* jclass cBool = ENVPTR->FindClass(ENVONLY, "java/lang/Boolean"); */
|
||||
@ -4087,7 +4086,6 @@ translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class
|
||||
if (!(typeSize = H5Tget_size(mem_type_id)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
ret_buflen = ENVPTR->GetArrayLength(ENVONLY, ret_buf);
|
||||
switch (type_class) {
|
||||
case H5T_VLEN: {
|
||||
if (!(memb = H5Tget_super(mem_type_id)))
|
||||
@ -4100,9 +4098,6 @@ translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class
|
||||
/* Convert element to a list */
|
||||
hvl_t vl_elem;
|
||||
|
||||
found_jList = JNI_TRUE;
|
||||
jList = NULL;
|
||||
|
||||
/* Get the number of sequence elements */
|
||||
HDmemcpy(&vl_elem, char_buf, sizeof(hvl_t));
|
||||
jsize nelmts = (jsize)vl_elem.len;
|
||||
@ -4121,8 +4116,7 @@ translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class
|
||||
break;
|
||||
} /* H5T_VLEN */
|
||||
case H5T_COMPOUND: {
|
||||
int nmembs = H5Tget_nmembers(mem_type_id);
|
||||
void *objBuf = NULL;
|
||||
int nmembs = H5Tget_nmembers(mem_type_id);
|
||||
|
||||
/* The list we're going to return: */
|
||||
if (NULL == (jList = (jobjectArray)ENVPTR->NewObject(ENVONLY, arrCList, arrListMethod, 0)))
|
||||
@ -4136,15 +4130,13 @@ translate_atomic_rbuf(JNIEnv *env, jobject ret_buf, jlong mem_type_id, H5T_class
|
||||
|
||||
if ((memb = H5Tget_member_type(mem_type_id, (unsigned int)i)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if ((memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)i)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)i);
|
||||
if ((memb_vlClass = H5Tget_class(memb)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if (!(memb_vlSize = H5Tget_size(memb)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
translate_atomic_rbuf(ENVONLY, jList, memb, memb_vlClass,
|
||||
char_buf + i * typeSize + memb_offset);
|
||||
translate_atomic_rbuf(ENVONLY, memb, memb_vlClass, char_buf + i * typeSize + memb_offset);
|
||||
H5Tclose(memb);
|
||||
}
|
||||
jobj = jList;
|
||||
@ -4315,7 +4307,7 @@ translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_
|
||||
hid_t memb = H5I_INVALID_HID;
|
||||
H5T_class_t vlClass;
|
||||
size_t vlSize;
|
||||
size_t i, x;
|
||||
size_t i;
|
||||
size_t typeSize;
|
||||
// raw_buf is normally bytes except when used for variable length strings
|
||||
char *char_buf = (char *)raw_buf;
|
||||
@ -4371,8 +4363,6 @@ translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_
|
||||
break;
|
||||
} /* H5T_VLEN */
|
||||
case H5T_COMPOUND: {
|
||||
void *objBuf = NULL;
|
||||
|
||||
/* Convert each compound element */
|
||||
int nmembs = H5Tget_nmembers(mem_type_id);
|
||||
|
||||
@ -4394,14 +4384,13 @@ translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_
|
||||
|
||||
if ((memb = H5Tget_member_type(mem_type_id, (unsigned int)i)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if ((memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)i)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)i);
|
||||
if ((memb_vlClass = H5Tget_class(memb)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if (!(memb_vlSize = H5Tget_size(memb)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
jobject arr_obj = ENVPTR->GetObjectArrayElement(ENVONLY, array, i);
|
||||
jobject arr_obj = ENVPTR->GetObjectArrayElement(ENVONLY, array, (jsize)i);
|
||||
translate_atomic_wbuf(ENVONLY, arr_obj, memb, memb_vlClass,
|
||||
char_buf + i * typeSize + memb_offset);
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, arr_obj);
|
||||
@ -4434,7 +4423,7 @@ translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_
|
||||
|
||||
translate_wbuf(ENVONLY, array, memb, vlClass, (jsize)jnelmts, objBuf);
|
||||
|
||||
HDmemcpy(char_buf, (char *)objBuf, vlSize * jnelmts);
|
||||
HDmemcpy(char_buf, (char *)objBuf, vlSize * (size_t)jnelmts);
|
||||
break;
|
||||
} /* H5T_ARRAY */
|
||||
case H5T_ENUM:
|
||||
@ -4446,6 +4435,7 @@ translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_
|
||||
case sizeof(jbyte): {
|
||||
jbyte byteValue = ENVPTR->CallByteMethod(ENVONLY, in_obj, byteValueMid);
|
||||
HDmemcpy(char_buf, ((char *)&byteValue), typeSize);
|
||||
break;
|
||||
}
|
||||
case sizeof(jshort): {
|
||||
jshort shortValue = ENVPTR->CallShortMethod(ENVONLY, in_obj, shortValueMid);
|
||||
@ -4504,12 +4494,12 @@ translate_atomic_wbuf(JNIEnv *env, jobject in_obj, jlong mem_type_id, H5T_class_
|
||||
length = ENVPTR->GetStringUTFLength(ENVONLY, in_obj);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
||||
if (is_variable) {
|
||||
char *new_buf = (char *)HDcalloc((size_t)1, length + 1);
|
||||
HDmemcpy(((char *)new_buf), utf8, length);
|
||||
char *new_buf = (char *)HDcalloc(1, (size_t)(length + 1));
|
||||
HDmemcpy(((char *)new_buf), utf8, (size_t)length);
|
||||
HDmemcpy(char_buf, &new_buf, typeSize);
|
||||
}
|
||||
else {
|
||||
HDmemcpy(char_buf, utf8, length);
|
||||
HDmemcpy(char_buf, utf8, (size_t)length);
|
||||
}
|
||||
UNPIN_JAVA_STRING(ENVONLY, in_obj, utf8);
|
||||
utf8 = NULL;
|
||||
@ -4547,25 +4537,13 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
jmethodID arrListMethod = ENVPTR->GetMethodID(ENVONLY, arrCList, "<init>", "(I)V");
|
||||
jmethodID arrAddMethod = ENVPTR->GetMethodID(ENVONLY, arrCList, "add", "(Ljava/lang/Object;)Z");
|
||||
|
||||
/* Cache class types */
|
||||
jclass cByte = ENVPTR->FindClass(ENVONLY, "java/lang/Byte");
|
||||
jclass cShort = ENVPTR->FindClass(ENVONLY, "java/lang/Short");
|
||||
jclass cInt = ENVPTR->FindClass(ENVONLY, "java/lang/Integer");
|
||||
jclass cLong = ENVPTR->FindClass(ENVONLY, "java/lang/Long");
|
||||
jclass cFloat = ENVPTR->FindClass(ENVONLY, "java/lang/Float");
|
||||
jclass cDouble = ENVPTR->FindClass(ENVONLY, "java/lang/Double");
|
||||
jmethodID byteValueMid = ENVPTR->GetStaticMethodID(ENVONLY, cByte, "valueOf", "(B)Ljava/lang/Byte;");
|
||||
jmethodID shortValueMid = ENVPTR->GetStaticMethodID(ENVONLY, cShort, "valueOf", "(S)Ljava/lang/Short;");
|
||||
jmethodID intValueMid = ENVPTR->GetStaticMethodID(ENVONLY, cInt, "valueOf", "(I)Ljava/lang/Integer;");
|
||||
jmethodID longValueMid = ENVPTR->GetStaticMethodID(ENVONLY, cLong, "valueOf", "(J)Ljava/lang/Long;");
|
||||
jmethodID floatValueMid = ENVPTR->GetStaticMethodID(ENVONLY, cFloat, "valueOf", "(F)Ljava/lang/Float;");
|
||||
jmethodID doubleValueMid =
|
||||
ENVPTR->GetStaticMethodID(ENVONLY, cDouble, "valueOf", "(D)Ljava/lang/Double;");
|
||||
|
||||
if (!(typeSize = H5Tget_size(mem_type_id)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
ret_buflen = ENVPTR->GetArrayLength(ENVONLY, ret_buf);
|
||||
if (ret_buflen < 0)
|
||||
H5_JNI_FATAL_ERROR(ENVONLY, "ret_buflen: Array length cannot be negative");
|
||||
|
||||
switch (type_class) {
|
||||
case H5T_VLEN: {
|
||||
if (!(memb = H5Tget_super(mem_type_id)))
|
||||
@ -4592,7 +4570,7 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
H5_BAD_ARGUMENT_ERROR(ENVONLY, "translate_rbuf: number of VL elements < 0");
|
||||
|
||||
/* The list we're going to return: */
|
||||
if (i < ret_buflen) {
|
||||
if (i < (size_t)ret_buflen) {
|
||||
jList = ENVPTR->GetObjectArrayElement(ENVONLY, (jobjectArray)ret_buf, (jsize)i);
|
||||
}
|
||||
if (NULL == jList) {
|
||||
@ -4604,7 +4582,6 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
}
|
||||
|
||||
translate_rbuf(ENVONLY, jList, memb, vlClass, (jsize)nelmts, vl_elem.p);
|
||||
int jListlen = ENVPTR->GetArrayLength(ENVONLY, jList);
|
||||
if (found_jList == JNI_FALSE) {
|
||||
jboolean addResult =
|
||||
ENVPTR->CallBooleanMethod(ENVONLY, ret_buf, arrAddMethod, (jobject)jList);
|
||||
@ -4612,7 +4589,7 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
H5_JNI_FATAL_ERROR(ENVONLY, "translate_rbuf: cannot add VL element");
|
||||
}
|
||||
else {
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, i, (jobject)jList);
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, (jsize)i, (jobject)jList);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
||||
}
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, jList);
|
||||
@ -4620,15 +4597,13 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
break;
|
||||
} /* H5T_VLEN */
|
||||
case H5T_COMPOUND: {
|
||||
void *objBuf = NULL;
|
||||
|
||||
/* Convert each compound element to a list */
|
||||
for (i = 0; i < (size_t)count; i++) {
|
||||
found_jList = JNI_TRUE;
|
||||
jList = NULL;
|
||||
|
||||
/* The list we're going to return: */
|
||||
if (i < ret_buflen) {
|
||||
if (i < (size_t)ret_buflen) {
|
||||
jList = ENVPTR->GetObjectArrayElement(ENVONLY, (jobjectArray)ret_buf, (jsize)i);
|
||||
}
|
||||
if (NULL == jList) {
|
||||
@ -4647,21 +4622,20 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
|
||||
if ((memb = H5Tget_member_type(mem_type_id, (unsigned int)x)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if ((memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)x)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)x);
|
||||
|
||||
if ((memb_vlClass = H5Tget_class(memb)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if (!(memb_vlSize = H5Tget_size(memb)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
jobj = translate_atomic_rbuf(ENVONLY, jList, memb, memb_vlClass,
|
||||
jobj = translate_atomic_rbuf(ENVONLY, memb, memb_vlClass,
|
||||
char_buf + i * typeSize + memb_offset);
|
||||
if (jobj) {
|
||||
if (found_jList == JNI_FALSE)
|
||||
ENVPTR->CallBooleanMethod(ENVONLY, jList, arrAddMethod, (jobject)jobj);
|
||||
else
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, jList, i, (jobject)jobj);
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, jList, (jsize)i, (jobject)jobj);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, jobj);
|
||||
}
|
||||
@ -4671,7 +4645,7 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
if (ret_buflen == 0)
|
||||
ENVPTR->CallBooleanMethod(ENVONLY, ret_buf, arrAddMethod, jList);
|
||||
else
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, i, jList);
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, (jsize)i, jList);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, jList);
|
||||
}
|
||||
@ -4704,7 +4678,7 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
HDmemcpy((char *)objBuf, char_buf + i * typeSize, typeSize);
|
||||
|
||||
/* The list we're going to return: */
|
||||
if (i < ret_buflen) {
|
||||
if (i < (size_t)ret_buflen) {
|
||||
if (NULL ==
|
||||
(jList = ENVPTR->GetObjectArrayElement(ENVONLY, (jobjectArray)ret_buf, (jsize)i)))
|
||||
found_jList = JNI_FALSE;
|
||||
@ -4720,7 +4694,7 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
if (found_jList == JNI_FALSE)
|
||||
ENVPTR->CallBooleanMethod(ENVONLY, ret_buf, arrAddMethod, jList);
|
||||
else
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, i, jList);
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, (jsize)i, jList);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, jList);
|
||||
}
|
||||
@ -4739,13 +4713,12 @@ translate_rbuf(JNIEnv *env, jobjectArray ret_buf, jlong mem_type_id, H5T_class_t
|
||||
case H5T_STRING: {
|
||||
/* Convert each element to a list */
|
||||
for (i = 0; i < (size_t)count; i++) {
|
||||
jobj =
|
||||
translate_atomic_rbuf(ENVONLY, ret_buf, mem_type_id, type_class, char_buf + i * typeSize);
|
||||
jobj = translate_atomic_rbuf(ENVONLY, mem_type_id, type_class, char_buf + i * typeSize);
|
||||
if (jobj) {
|
||||
if (ret_buflen == 0)
|
||||
ENVPTR->CallBooleanMethod(ENVONLY, ret_buf, arrAddMethod, (jobject)jobj);
|
||||
else
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, i, (jobject)jobj);
|
||||
ENVPTR->SetObjectArrayElement(ENVONLY, ret_buf, (jsize)i, (jobject)jobj);
|
||||
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, jobj);
|
||||
}
|
||||
@ -4781,23 +4754,6 @@ translate_wbuf(JNIEnv *env, jobjectArray in_buf, jlong mem_type_id, H5T_class_t
|
||||
/* retrieve the toArray method */
|
||||
jmethodID mToArray = ENVPTR->GetMethodID(ENVONLY, arrCList, "toArray", "()[Ljava/lang/Object;");
|
||||
|
||||
/* Cache class types */
|
||||
/* jclass cBool = ENVPTR->FindClass(ENVONLY, "java/lang/Boolean"); */
|
||||
jclass cByte = ENVPTR->FindClass(ENVONLY, "java/lang/Byte");
|
||||
jclass cShort = ENVPTR->FindClass(ENVONLY, "java/lang/Short");
|
||||
jclass cInt = ENVPTR->FindClass(ENVONLY, "java/lang/Integer");
|
||||
jclass cLong = ENVPTR->FindClass(ENVONLY, "java/lang/Long");
|
||||
jclass cFloat = ENVPTR->FindClass(ENVONLY, "java/lang/Float");
|
||||
jclass cDouble = ENVPTR->FindClass(ENVONLY, "java/lang/Double");
|
||||
|
||||
/* jmethodID boolValueMid = ENVPTR->GetMethodID(ENVONLY, cBool, "booleanValue", "()Z"); */
|
||||
jmethodID byteValueMid = ENVPTR->GetMethodID(ENVONLY, cByte, "byteValue", "()B");
|
||||
jmethodID shortValueMid = ENVPTR->GetMethodID(ENVONLY, cShort, "shortValue", "()S");
|
||||
jmethodID intValueMid = ENVPTR->GetMethodID(ENVONLY, cInt, "intValue", "()I");
|
||||
jmethodID longValueMid = ENVPTR->GetMethodID(ENVONLY, cLong, "longValue", "()J");
|
||||
jmethodID floatValueMid = ENVPTR->GetMethodID(ENVONLY, cFloat, "floatValue", "()F");
|
||||
jmethodID doubleValueMid = ENVPTR->GetMethodID(ENVONLY, cDouble, "doubleValue", "()D");
|
||||
|
||||
if (!(typeSize = H5Tget_size(mem_type_id)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
@ -4840,8 +4796,6 @@ translate_wbuf(JNIEnv *env, jobjectArray in_buf, jlong mem_type_id, H5T_class_t
|
||||
break;
|
||||
} /* H5T_VLEN */
|
||||
case H5T_COMPOUND: {
|
||||
void *objBuf = NULL;
|
||||
|
||||
/* Convert each list to a compound element */
|
||||
for (i = 0; i < (size_t)count; i++) {
|
||||
if (NULL == (jList = ENVPTR->GetObjectArrayElement(ENVONLY, (jobjectArray)in_buf, (jsize)i)))
|
||||
@ -4867,15 +4821,14 @@ translate_wbuf(JNIEnv *env, jobjectArray in_buf, jlong mem_type_id, H5T_class_t
|
||||
|
||||
if ((memb = H5Tget_member_type(mem_type_id, (unsigned int)x)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if ((memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)x)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
memb_offset = H5Tget_member_offset(mem_type_id, (unsigned int)x);
|
||||
|
||||
if ((memb_vlClass = H5Tget_class(memb)) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if (!(memb_vlSize = H5Tget_size(memb)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
jobject arr_obj = ENVPTR->GetObjectArrayElement(ENVONLY, array, x);
|
||||
jobject arr_obj = ENVPTR->GetObjectArrayElement(ENVONLY, array, (jsize)x);
|
||||
translate_atomic_wbuf(ENVONLY, arr_obj, memb, memb_vlClass,
|
||||
char_buf + i * typeSize + memb_offset);
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, arr_obj);
|
||||
@ -4887,8 +4840,6 @@ translate_wbuf(JNIEnv *env, jobjectArray in_buf, jlong mem_type_id, H5T_class_t
|
||||
break;
|
||||
} /* H5T_COMPOUND */
|
||||
case H5T_ARRAY: {
|
||||
void *objBuf = NULL;
|
||||
|
||||
if (!(memb = H5Tget_super(mem_type_id)))
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
if ((vlClass = H5Tget_class(memb)) < 0)
|
||||
@ -4910,8 +4861,8 @@ translate_wbuf(JNIEnv *env, jobjectArray in_buf, jlong mem_type_id, H5T_class_t
|
||||
if (jnelmts < 0)
|
||||
H5_BAD_ARGUMENT_ERROR(ENVONLY, "translate_wbuf: number of array elements < 0");
|
||||
|
||||
translate_wbuf(ENVONLY, array, memb, vlClass, (jsize)jnelmts,
|
||||
char_buf + i * vlSize * jnelmts); // objBuf);
|
||||
translate_wbuf(ENVONLY, array, memb, vlClass, jnelmts,
|
||||
char_buf + i * vlSize * (size_t)jnelmts);
|
||||
|
||||
ENVPTR->DeleteLocalRef(ENVONLY, jList);
|
||||
} /* end for (i = 0; i < count; i++) */
|
||||
|
Loading…
x
Reference in New Issue
Block a user