summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-12-21 19:14:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-12-21 19:14:37 +0000
commite1a67faba3b91bdfedbb80301e06db3488b70f22 (patch)
treef50f108a0d12ba38e1dfb19a1804eecca70b64d1
parent6c4f2de95a3cfde00f6d93609337b8f92bccdf5f (diff)
parent6dfa25aa3f1c555fa3bd04b8452712d64dd71918 (diff)
Merge "Using new usbhost function usb_device_get_string_ucs2() to get USB descriptor strings."
-rw-r--r--services/core/jni/com_android_server_UsbDescriptorParser.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/services/core/jni/com_android_server_UsbDescriptorParser.cpp b/services/core/jni/com_android_server_UsbDescriptorParser.cpp
index 35e65bc3110f..79f482c6df7f 100644
--- a/services/core/jni/com_android_server_UsbDescriptorParser.cpp
+++ b/services/core/jni/com_android_server_UsbDescriptorParser.cpp
@@ -81,16 +81,20 @@ jstring JNICALL Java_com_android_server_usb_descriptors_UsbDescriptorParser_getD
return NULL;
}
- char* c_str = usb_device_get_string(device, stringId, 0 /*timeout*/);
-
- jstring j_str = env->NewStringUTF(c_str);
-
- free(c_str);
- usb_device_close(device);
-
+ // Get Raw UCS2 Bytes
+ jbyte* byteBuffer = NULL;
+ size_t numUSC2Bytes = 0;
+ int retVal =
+ usb_device_get_string_ucs2(device, stringId, 0 /*timeout*/,
+ (void**)&byteBuffer, &numUSC2Bytes);
+
+ jstring j_str = NULL;
+
+ if (retVal == 0) {
+ j_str = env->NewString((jchar*)byteBuffer, numUSC2Bytes/2);
+ free(byteBuffer);
+ }
return j_str;
}
} // extern "C"
-
-