From a61e0be5ebfc61112592cb952e60daeb09d4db9d Mon Sep 17 00:00:00 2001 From: Klaus Reimer Date: Tue, 8 Feb 2011 22:20:01 +0100 Subject: [PATCH] Fixed wrong size in interface descriptor. Splitted function calls for easier debugging. --- src/main/c/src/USB_Endpoint_Descriptor.c | 7 +++++-- src/main/c/src/USB_Interface_Descriptor.c | 9 ++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/c/src/USB_Endpoint_Descriptor.c b/src/main/c/src/USB_Endpoint_Descriptor.c index 1a04a41..8efb254 100644 --- a/src/main/c/src/USB_Endpoint_Descriptor.c +++ b/src/main/c/src/USB_Endpoint_Descriptor.c @@ -63,8 +63,11 @@ jobjectArray wrap_usb_endpoint_descriptors(JNIEnv *env, uint8_t num_descriptors, num_descriptors, (*env)->FindClass(env, PACKAGE_DIR"/USB_Endpoint_Descriptor"), NULL); for (i = 0; i < num_descriptors; i++) - (*env)->SetObjectArrayElement(env, array, i, - wrap_usb_endpoint_descriptor(env, &descriptors[i])); + { + struct usb_endpoint_descriptor *descriptor = &descriptors[0]; + (*env)->SetObjectArrayElement(env, array, i, + wrap_usb_endpoint_descriptor(env, descriptor)); + } return array; } diff --git a/src/main/c/src/USB_Interface_Descriptor.c b/src/main/c/src/USB_Interface_Descriptor.c index a76b267..9402b43 100644 --- a/src/main/c/src/USB_Interface_Descriptor.c +++ b/src/main/c/src/USB_Interface_Descriptor.c @@ -39,7 +39,7 @@ jobject wrap_usb_interface_descriptor(JNIEnv *env, "(Ljava/nio/ByteBuffer;)V"); if (constructor == NULL) return NULL; jobject buffer = (*env)->NewDirectByteBuffer(env, descriptor, - sizeof(struct usb_endpoint_descriptor)); + sizeof(struct usb_interface_descriptor)); return (*env)->NewObject(env, cls, constructor, buffer); } @@ -65,8 +65,11 @@ jobjectArray wrap_usb_interface_descriptors(JNIEnv *env, uint8_t num_descriptors num_descriptors, (*env)->FindClass(env, PACKAGE_DIR"/USB_Interface_Descriptor"), NULL); for (i = 0; i < num_descriptors; i++) - (*env)->SetObjectArrayElement(env, array, i, - wrap_usb_interface_descriptor(env, &descriptors[i])); + { + struct usb_interface_descriptor *descriptor = &descriptors[i]; + (*env)->SetObjectArrayElement(env, array, i, + wrap_usb_interface_descriptor(env, descriptor)); + } return array; }