mirror of
https://github.com/revanced/smali.git
synced 2025-05-05 09:04:25 +02:00
Implement skipping for all variable sized lists
This commit is contained in:
parent
36e2ee2005
commit
380ca70a2c
@ -71,6 +71,11 @@ public class DexBackedAnnotation implements Annotation {
|
|||||||
return new DexBackedAnnotationElement(reader);
|
return new DexBackedAnnotationElement(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void skipItem(DexReader reader, int index) {
|
||||||
|
DexBackedAnnotationElement.skipFrom(reader);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public int size() { return size;}
|
@Override public int size() { return size;}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,11 @@ public class DexBackedAnnotationElement implements AnnotationElement {
|
|||||||
this.value = DexBackedEncodedValue.readFrom(reader);
|
this.value = DexBackedEncodedValue.readFrom(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void skipFrom(DexReader reader) {
|
||||||
|
reader.skipUleb128();
|
||||||
|
DexBackedEncodedValue.skipFrom(reader);
|
||||||
|
}
|
||||||
|
|
||||||
@Nonnull @Override public String getName() { return name; }
|
@Nonnull @Override public String getName() { return name; }
|
||||||
@Nonnull @Override public EncodedValue getValue() { return value; }
|
@Nonnull @Override public EncodedValue getValue() { return value; }
|
||||||
}
|
}
|
||||||
|
@ -42,4 +42,8 @@ public class DexBackedCatchAllExceptionHandler extends ImmutableExceptionHandler
|
|||||||
super(null,
|
super(null,
|
||||||
instructionOffsetMap.getInstructionIndexAtOffsetExact(reader.readSmallUleb128()));
|
instructionOffsetMap.getInstructionIndexAtOffsetExact(reader.readSmallUleb128()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void skipFrom(DexReader reader) {
|
||||||
|
reader.skipUleb128();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,4 +43,9 @@ public class DexBackedExceptionHandler extends ImmutableExceptionHandler {
|
|||||||
super(reader.getType(reader.readSmallUleb128()),
|
super(reader.getType(reader.readSmallUleb128()),
|
||||||
instructionOffsetMap.getInstructionIndexAtOffsetExact(reader.readSmallUleb128()));
|
instructionOffsetMap.getInstructionIndexAtOffsetExact(reader.readSmallUleb128()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void skipFrom(DexReader reader) {
|
||||||
|
reader.skipUleb128();
|
||||||
|
reader.skipUleb128();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,12 @@ public class DexBackedTryBlock implements TryBlock {
|
|||||||
protected ExceptionHandler readItem(DexReader reader, int index) {
|
protected ExceptionHandler readItem(DexReader reader, int index) {
|
||||||
return new DexBackedExceptionHandler(reader, instructionOffsetMap);
|
return new DexBackedExceptionHandler(reader, instructionOffsetMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void skipItem(DexReader dexReader, int index) {
|
||||||
|
DexBackedExceptionHandler.skipFrom(dexReader);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public int size() { return encodedSize; }
|
@Override public int size() { return encodedSize; }
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
@ -107,6 +113,17 @@ public class DexBackedTryBlock implements TryBlock {
|
|||||||
return new DexBackedExceptionHandler(dexReader, instructionOffsetMap);
|
return new DexBackedExceptionHandler(dexReader, instructionOffsetMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void skipItem(DexReader dexReader, int index) {
|
||||||
|
if (index == sizeWithCatchAll-1) {
|
||||||
|
DexBackedCatchAllExceptionHandler.skipFrom(dexReader);
|
||||||
|
} else {
|
||||||
|
DexBackedExceptionHandler.skipFrom(dexReader);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override public int size() { return sizeWithCatchAll; }
|
@Override public int size() { return sizeWithCatchAll; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,11 @@ public class DexBackedAnnotationEncodedValue implements AnnotationEncodedValue {
|
|||||||
return new DexBackedAnnotationElement(dexReader);
|
return new DexBackedAnnotationElement(dexReader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void skipItem(DexReader reader, int index) {
|
||||||
|
DexBackedAnnotationElement.skipFrom(reader);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public int size() { return size;}
|
@Override public int size() { return size;}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,11 @@ public class DexBackedArrayEncodedValue implements ArrayEncodedValue {
|
|||||||
return DexBackedEncodedValue.readFrom(dexReader);
|
return DexBackedEncodedValue.readFrom(dexReader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void skipItem(DexReader reader, int index) {
|
||||||
|
DexBackedEncodedValue.skipFrom(reader);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public int size() { return size;}
|
@Override public int size() { return size;}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user