Bad index for debug_info_item parameter_name: 2ffffff >= 1e58
- Dominant language
- Java
- Stars
- 400
- Forks
- 67
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 1
Description
reason is:
```java
private int writeDebugItem(@Nonnull DexDataWriter writer,
@Nullable Iterable parameterNames,
@Nullable Iterable debugItems) throws IOException {
int parameterCount = 0;
int lastNamedParameterIndex = -1;
if (parameterNames != null) {
parameterCount = IteratorUtils.size(parameterNames);
int index = 0;
for (StringKey parameterName: parameterNames) {
if (parameterName != null) {
lastNamedParameterIndex = index;
}
index++;
}
}
if (lastNamedParameterIndex == -1 && (debugItems == null
|| !debugItems.iterator().hasNext())) {
return NO_OFFSET;
}
int debugItemOffset = writer.getPosition();
int startingLineNumber = 0;
if (debugItems != null) {
for (DebugItem debugItem: debugItems) {
if (debugItem instanceof LineNumber) {
startingLineNumber = ((LineNumber)debugItem).getLineNumber();
break;
}
}
}
ByteArrayOutputStream tempByteOutput = new ByteArrayOutputStream();
DexDataWriter tempDataWriter = new DexDataWriter(tempByteOutput, 0, 64);
DebugWriter tempDebugWriter = new DebugWriter(stringSection, typeSection, tempDataWriter);
tempDataWriter.writeUleb128(startingLineNumber);
```
The parameterNames type is is TransformedIterator.
```java
public class TransformedIterator
implements Iterator, Iterable {
final Iterator backingIterator;
final Function transformFunction;
public TransformedIterator(Iterable backingIterable,
Function transformFunction) {
this.backingIterator = backingIterable.iterator();
this.transformFunction = transformFunction;
}
public TransformedIterator(Iterator backingIterator,
Function transformFunction) {
this.backingIterator = backingIterator;
this.transformFunction = transformFunction;
}
@Override
public final boolean hasNext() {
return backingIterator.hasNext();
}
@Override
public final T next() {
return transformFunction.apply(backingIterator.next());
}
@Override
public final void remove() {
backingIterator.remove();
}
@Override
public final Iterator iterator() {
return this;
}
}
```
It can be used only once.
Contributor guide
Assessment
This issue has not been assessed yet.