summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2020-11-26 02:39:54 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2020-11-26 02:39:54 +0000
commit97c2606bbd475b6a6b10c25891f189d77889e3b1 (patch)
treeb31f2fbb3ab344eadf777cc302730790f5adc46c
parent768384c66111f8493bb8f6b2446eafd39910c120 (diff)
parent3f5ffa615a64a221d8d310beda6bad4fe1ac1e21 (diff)
Merge "ParcelableHolder shouldn't write anything for empty case"
-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();