From 24c82279feaff1674efacddc33a7785b23351c58 Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Wed, 11 Jan 2017 12:35:56 +0100 Subject: [PATCH] Use new read(Embedded)Buffer APIs. Bug: 34134129 Test: mma, hidl_test_java Change-Id: I13b3841778d5df4e7c37760610712a26c68896d6 --- core/jni/android_os_HwParcel.cpp | 57 +++++++++++++++++--------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp index b9d810a4190b1..aefdc84b19124 100644 --- a/core/jni/android_os_HwParcel.cpp +++ b/core/jni/android_os_HwParcel.cpp @@ -568,15 +568,16 @@ static jstring JHwParcel_native_readString(JNIEnv *env, jobject thiz) { size_t parentHandle; - const hidl_string *s = static_cast( - parcel->readBuffer(&parentHandle)); + const hidl_string *s; + status_t err = parcel->readBuffer(&parentHandle, + reinterpret_cast(&s)); - if (s == NULL) { - signalExceptionForError(env, UNKNOWN_ERROR); + if (err != OK) { + signalExceptionForError(env, err); return NULL; } - status_t err = ::android::hardware::readEmbeddedFromParcel( + err = ::android::hardware::readEmbeddedFromParcel( const_cast(s), *parcel, parentHandle, 0 /* parentOffset */); @@ -593,20 +594,20 @@ static Type ## Array JHwParcel_native_read ## Suffix ## Vector( \ JNIEnv *env, jobject thiz) { \ hardware::Parcel *parcel = \ JHwParcel::GetNativeContext(env, thiz)->getParcel(); \ - \ size_t parentHandle; \ \ - const hidl_vec *vec = \ - (const hidl_vec *)parcel->readBuffer(&parentHandle); \ + const hidl_vec *vec; \ + status_t err = parcel->readBuffer(&parentHandle, \ + reinterpret_cast(&vec)); \ \ - if (vec == NULL) { \ - signalExceptionForError(env, UNKNOWN_ERROR); \ + if (err != OK) { \ + signalExceptionForError(env, err); \ return NULL; \ } \ \ size_t childHandle; \ \ - status_t err = ::android::hardware::readEmbeddedFromParcel( \ + err = ::android::hardware::readEmbeddedFromParcel( \ const_cast *>(vec), \ *parcel, \ parentHandle, \ @@ -638,17 +639,18 @@ static jbooleanArray JHwParcel_native_readBoolVector( size_t parentHandle; - const hidl_vec *vec = - (const hidl_vec *)parcel->readBuffer(&parentHandle); + const hidl_vec *vec; + status_t err = parcel->readBuffer(&parentHandle, + reinterpret_cast(&vec)); - if (vec == NULL) { - signalExceptionForError(env, UNKNOWN_ERROR); + if (err != OK) { + signalExceptionForError(env, err); return NULL; } size_t childHandle; - status_t err = ::android::hardware::readEmbeddedFromParcel( + err = ::android::hardware::readEmbeddedFromParcel( const_cast *>(vec), *parcel, parentHandle, @@ -701,16 +703,17 @@ static jobjectArray JHwParcel_native_readStringVector( size_t parentHandle; - const string_vec *vec= - (const string_vec *)parcel->readBuffer(&parentHandle); + const string_vec *vec; + status_t err = parcel->readBuffer(&parentHandle, + reinterpret_cast(&vec)); - if (vec == NULL) { - signalExceptionForError(env, UNKNOWN_ERROR); + if (err != OK) { + signalExceptionForError(env, err); return NULL; } size_t childHandle; - status_t err = ::android::hardware::readEmbeddedFromParcel( + err = ::android::hardware::readEmbeddedFromParcel( const_cast(vec), *parcel, parentHandle, 0 /* parentOffset */, &childHandle); @@ -807,9 +810,10 @@ static jobject JHwParcel_native_readBuffer(JNIEnv *env, jobject thiz) { JHwParcel::GetNativeContext(env, thiz)->getParcel(); size_t handle; - const void *ptr = parcel->readBuffer(&handle); + const void *ptr; + status_t status = parcel->readBuffer(&handle, &ptr); - if (ptr == nullptr) { + if (status != OK) { jniThrowException(env, "java/util/NoSuchElementException", NULL); return nullptr; } @@ -824,10 +828,11 @@ static jobject JHwParcel_native_readEmbeddedBuffer( size_t childHandle; - const void *ptr = - parcel->readEmbeddedBuffer(&childHandle, parentHandle, offset); + const void *ptr; + status_t status = + parcel->readEmbeddedBuffer(&childHandle, parentHandle, offset, &ptr); - if (ptr == nullptr) { + if (status != OK) { jniThrowException(env, "java/util/NoSuchElementException", NULL); return 0; }