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);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void skipItem(DexReader reader, int index) {
|
||||
DexBackedAnnotationElement.skipFrom(reader);
|
||||
}
|
||||
|
||||
@Override public int size() { return size;}
|
||||
};
|
||||
}
|
||||
|
@ -46,6 +46,11 @@ public class DexBackedAnnotationElement implements AnnotationElement {
|
||||
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 EncodedValue getValue() { return value; }
|
||||
}
|
||||
|
@ -42,4 +42,8 @@ public class DexBackedCatchAllExceptionHandler extends ImmutableExceptionHandler
|
||||
super(null,
|
||||
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()),
|
||||
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) {
|
||||
return new DexBackedExceptionHandler(reader, instructionOffsetMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void skipItem(DexReader dexReader, int index) {
|
||||
DexBackedExceptionHandler.skipFrom(dexReader);
|
||||
}
|
||||
|
||||
@Override public int size() { return encodedSize; }
|
||||
};
|
||||
} else {
|
||||
@ -107,6 +113,17 @@ public class DexBackedTryBlock implements TryBlock {
|
||||
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; }
|
||||
};
|
||||
}
|
||||
|
@ -83,6 +83,11 @@ public class DexBackedAnnotationEncodedValue implements AnnotationEncodedValue {
|
||||
return new DexBackedAnnotationElement(dexReader);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void skipItem(DexReader reader, int index) {
|
||||
DexBackedAnnotationElement.skipFrom(reader);
|
||||
}
|
||||
|
||||
@Override public int size() { return size;}
|
||||
};
|
||||
}
|
||||
|
@ -73,6 +73,11 @@ public class DexBackedArrayEncodedValue implements ArrayEncodedValue {
|
||||
return DexBackedEncodedValue.readFrom(dexReader);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void skipItem(DexReader reader, int index) {
|
||||
DexBackedEncodedValue.skipFrom(reader);
|
||||
}
|
||||
|
||||
@Override public int size() { return size;}
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user