Use new read(Embedded)Buffer APIs.
Bug: 34134129
Test: mma, hidl_test_java
Change-Id: I13b3841778d5df4e7c37760610712a26c68896d6
diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp
index b9d810a..aefdc84 100644
--- a/core/jni/android_os_HwParcel.cpp
+++ b/core/jni/android_os_HwParcel.cpp
@@ -568,15 +568,16 @@
size_t parentHandle;
- const hidl_string *s = static_cast<const hidl_string *>(
- parcel->readBuffer(&parentHandle));
+ const hidl_string *s;
+ status_t err = parcel->readBuffer(&parentHandle,
+ reinterpret_cast<const void**>(&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<hidl_string *>(s),
*parcel, parentHandle, 0 /* parentOffset */);
@@ -593,20 +594,20 @@
JNIEnv *env, jobject thiz) { \
hardware::Parcel *parcel = \
JHwParcel::GetNativeContext(env, thiz)->getParcel(); \
- \
size_t parentHandle; \
\
- const hidl_vec<Type> *vec = \
- (const hidl_vec<Type> *)parcel->readBuffer(&parentHandle); \
+ const hidl_vec<Type> *vec; \
+ status_t err = parcel->readBuffer(&parentHandle, \
+ reinterpret_cast<const void**>(&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<hidl_vec<Type> *>(vec), \
*parcel, \
parentHandle, \
@@ -638,17 +639,18 @@
size_t parentHandle;
- const hidl_vec<bool> *vec =
- (const hidl_vec<bool> *)parcel->readBuffer(&parentHandle);
+ const hidl_vec<bool> *vec;
+ status_t err = parcel->readBuffer(&parentHandle,
+ reinterpret_cast<const void**>(&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<hidl_vec<bool> *>(vec),
*parcel,
parentHandle,
@@ -701,16 +703,17 @@
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<const void **>(&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<string_vec *>(vec),
*parcel, parentHandle, 0 /* parentOffset */, &childHandle);
@@ -807,9 +810,10 @@
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 @@
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;
}