describeContents() returns CONTENTS_FILE_DESCRIPTOR
Parcelable.describeContents() returns CONTENTS_FILE_DESCRIPTOR when the
contents hold a file descriptor.
Bug: 170677046
Test: aidl_unittests / aidl_integration_test
Change-Id: Idb06123def25c78f7e4ed5317e61ddee8ca39d5d
diff --git a/aidl_language.cpp b/aidl_language.cpp
index 3bf8c47..63a7d4f 100644
--- a/aidl_language.cpp
+++ b/aidl_language.cpp
@@ -405,14 +405,16 @@
comments_(comments),
split_name_(Split(unresolved_name, ".")) {}
-AidlTypeSpecifier AidlTypeSpecifier::ArrayBase() const {
+const AidlTypeSpecifier& AidlTypeSpecifier::ArrayBase() const {
AIDL_FATAL_IF(!is_array_, this);
// Declaring array of generic type cannot happen, it is grammar error.
AIDL_FATAL_IF(IsGeneric(), this);
- AidlTypeSpecifier array_base = *this;
- array_base.is_array_ = false;
- return array_base;
+ if (!array_base_) {
+ array_base_.reset(new AidlTypeSpecifier(*this));
+ array_base_->is_array_ = false;
+ }
+ return *array_base_;
}
bool AidlTypeSpecifier::IsHidden() const {