diff options
| author | 2020-11-26 03:18:35 +0000 | |
|---|---|---|
| committer | 2020-11-26 03:18:35 +0000 | |
| commit | a539a7a3b23aa7a42a5ca96a0cbdcefd569987e5 (patch) | |
| tree | b31f2fbb3ab344eadf777cc302730790f5adc46c | |
| parent | db8a9b5d7d6ebdd0744d90e24b2f8621ab54bf81 (diff) | |
| parent | 97c2606bbd475b6a6b10c25891f189d77889e3b1 (diff) | |
Merge "ParcelableHolder shouldn't write anything for empty case" am: 97c2606bbd
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1509888
Change-Id: I5f288f4e83a26b378bed41edc082ed501bb1f5a1
| -rw-r--r-- | core/java/android/os/ParcelableHolder.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/core/java/android/os/ParcelableHolder.java b/core/java/android/os/ParcelableHolder.java index 95c07b6b2451..fb9fa109bfa3 100644 --- a/core/java/android/os/ParcelableHolder.java +++ b/core/java/android/os/ParcelableHolder.java @@ -170,16 +170,21 @@ public final class ParcelableHolder implements Parcelable { mParcelable = null; + int dataSize = parcel.readInt(); + if (dataSize < 0) { + throw new IllegalArgumentException("dataSize from parcel is negative"); + } else if (dataSize == 0) { + if (mParcel != null) { + mParcel.recycle(); + mParcel = null; + } + return; + } if (mParcel == null) { mParcel = Parcel.obtain(); } mParcel.setDataPosition(0); mParcel.setDataSize(0); - - int dataSize = parcel.readInt(); - if (dataSize < 0) { - throw new IllegalArgumentException("dataSize from parcel is negative"); - } int dataStartPos = parcel.dataPosition(); mParcel.appendFrom(parcel, dataStartPos, dataSize); @@ -196,6 +201,11 @@ public final class ParcelableHolder implements Parcelable { return; } + if (mParcelable == null) { + parcel.writeInt(0); + return; + } + int sizePos = parcel.dataPosition(); parcel.writeInt(0); int dataStartPos = parcel.dataPosition(); |