diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-12-13 19:50:16 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-12-13 19:50:16 +0000 |
commit | af5fc3ca6ffc8fa7b55f3eb525a257e11b557dd2 (patch) | |
tree | 0c2439ebce5652d18b0aad8504a680be2cd05e86 | |
parent | bd26e59d33113487da6d00d9c8f712976f823083 (diff) | |
parent | eb05acaa43693a58ae35558a679fd971ab59d5cf (diff) | |
download | native-temp_sam_210511427.tar.gz |
Merge "binder_ndk: fix read/write interface" am: eb05acaa43temp_sam_210511427
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1900588
Change-Id: I67a05a55a122341a7c33d3eefdcc436d94e29a15
-rw-r--r-- | libs/binder/ndk/include_cpp/android/binder_parcel_utils.h | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h b/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h index c1487c0bd2..e5560f8ef5 100644 --- a/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h +++ b/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h @@ -482,9 +482,7 @@ static inline binder_status_t AParcel_readVector( template <typename P> static inline binder_status_t AParcel_writeParcelable(AParcel* parcel, const P& p) { if constexpr (is_interface_v<P>) { - if (!p) { - return STATUS_UNEXPECTED_NULL; - } + // Legacy behavior: allow null return first_template_type_t<P>::writeToParcel(parcel, p); } else { static_assert(is_parcelable_v<P>); @@ -502,13 +500,8 @@ static inline binder_status_t AParcel_writeParcelable(AParcel* parcel, const P& template <typename P> static inline binder_status_t AParcel_readParcelable(const AParcel* parcel, P* p) { if constexpr (is_interface_v<P>) { - binder_status_t status = first_template_type_t<P>::readFromParcel(parcel, p); - if (status == STATUS_OK) { - if (!*p) { - return STATUS_UNEXPECTED_NULL; - } - } - return status; + // Legacy behavior: allow null + return first_template_type_t<P>::readFromParcel(parcel, p); } else { static_assert(is_parcelable_v<P>); int32_t null; |