libbinder_ndk: do not rely on copyability of parcelables
AParcel_readNullableParcelable accidentally relies on T's copyability
(introduced by 3b31ccac97b070fd9e20a9d1860382af5a15fd10.)
This prevents non-copyable parcelables from being used in a nullable
arrays. For example, ScopedFileDescriptor.
The following example should be valid.
parcelable Foo {
parcelable Bar { ParcelFileDescriptor pfd; }
@nullable Bar[] bars;
}
This fixes it by using std::optional<T>::emplace().
Bug: 203483658
Test: m; build NDK with the example above.
Change-Id: If95b28869feca2114922c117b7eb618af434a535
1 file changed