diff options
| author | 2020-11-26 02:39:54 +0000 | |
|---|---|---|
| committer | 2020-11-26 02:39:54 +0000 | |
| commit | 97c2606bbd475b6a6b10c25891f189d77889e3b1 (patch) | |
| tree | b31f2fbb3ab344eadf777cc302730790f5adc46c | |
| parent | 768384c66111f8493bb8f6b2446eafd39910c120 (diff) | |
| parent | 3f5ffa615a64a221d8d310beda6bad4fe1ac1e21 (diff) | |
Merge "ParcelableHolder shouldn't write anything for empty case"
| -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(); |