summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2020-11-26 03:18:35 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-11-26 03:18:35 +0000
commita539a7a3b23aa7a42a5ca96a0cbdcefd569987e5 (patch)
treeb31f2fbb3ab344eadf777cc302730790f5adc46c
parentdb8a9b5d7d6ebdd0744d90e24b2f8621ab54bf81 (diff)
parent97c2606bbd475b6a6b10c25891f189d77889e3b1 (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.java20
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();