Parcelable: Convert I to Z explicitly, older Android Dex has strict checks for it (KT-20928)
This commit is contained in:
+23
@@ -676,6 +676,7 @@ internal open class PrimitiveTypeParcelSerializer private constructor(final over
|
||||
it to when (it) {
|
||||
Type.CHAR_TYPE -> CharParcelSerializer
|
||||
Type.SHORT_TYPE -> ShortParcelSerializer
|
||||
Type.BOOLEAN_TYPE -> BooleanParcelSerializer
|
||||
else -> PrimitiveTypeParcelSerializer(it)
|
||||
}
|
||||
}.toMap()
|
||||
@@ -707,6 +708,28 @@ internal open class PrimitiveTypeParcelSerializer private constructor(final over
|
||||
}
|
||||
}
|
||||
|
||||
object BooleanParcelSerializer : PrimitiveTypeParcelSerializer(Type.BOOLEAN_TYPE) {
|
||||
override fun writeValue(v: InstructionAdapter) {
|
||||
super.writeValue(v)
|
||||
}
|
||||
|
||||
override fun readValue(v: InstructionAdapter) {
|
||||
super.readValue(v)
|
||||
|
||||
val falseLabel = Label()
|
||||
val conditionIsOver = Label()
|
||||
|
||||
v.ifeq(falseLabel)
|
||||
v.iconst(1)
|
||||
v.goTo(conditionIsOver)
|
||||
|
||||
v.visitLabel(falseLabel)
|
||||
v.iconst(0)
|
||||
|
||||
v.visitLabel(conditionIsOver)
|
||||
}
|
||||
}
|
||||
|
||||
private val writeMethod = WRITE_METHOD_NAMES[asmType]!!
|
||||
private val readMethod = READ_METHOD_NAMES[asmType]!!
|
||||
|
||||
|
||||
+8
-1
@@ -6,6 +6,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
|
||||
LABEL (L1)
|
||||
NEW
|
||||
DUP
|
||||
ALOAD (1)
|
||||
@@ -16,9 +17,15 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
|
||||
ALOAD (1)
|
||||
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
|
||||
IFLE (L2)
|
||||
ICONST_1
|
||||
GOTO (L3)
|
||||
LABEL (L2)
|
||||
ICONST_0
|
||||
LABEL (L3)
|
||||
INVOKESPECIAL (User, <init>, (Ljava/lang/String;Ljava/lang/String;IZ)V)
|
||||
ARETURN
|
||||
LABEL (L1)
|
||||
LABEL (L4)
|
||||
|
||||
Local variables:
|
||||
this: LUser$Creator;
|
||||
|
||||
Reference in New Issue
Block a user