Fixed
Status Update
Comments
gg...@google.com <gg...@google.com> #2
Thank you for the report and the code causing the issue. I have landed a reproduction which shows that the code thrown an ArrayIndexOutOfBoundsException
from the last bitSet.toByteArray()[0]
when not processed by R8.
vi...@google.com <vi...@google.com> #3
Project: r8
Branch: main
Author: Søren Gjesse <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: bf9b1962052bf91689120a09deded518e37862a2
Date: Wed Jan 22 09:41:15 2025
al...@gmail.com <al...@gmail.com> #4
deleted
ra...@google.com <ra...@google.com>
pa...@google.com <pa...@google.com>
tn...@google.com <tn...@google.com> #5
I'm really sorry, please use the source code below:
public class R8Test {
public byte[] toBytes(boolean on) {
byte[] bytes = new byte[3];
bytes[0] = 1;
BitSet bits = new BitSet(8);
byte[] byteArray = bits.toByteArray();
if (byteArray != null && byteArray.length >= 1) {
bytes[1] = bits.toByteArray()[0];
}
BitSet bitSet = new BitSet(8);
byte[] byteArray2 = bits.toByteArray();
if (byteArray2 != null && byteArray2.length >= 1) {
bytes[2] = bitSet.toByteArray()[0];
}
return bytes;
}
}
an...@google.com <an...@google.com> #6
Thank you for the update. Most likely the initial source code will still be sufficient to fix the issue.
Description
kotlin always let ()->Unit as Runnable. But android Handler cannot removeCallbacks. Ex:
Above code will be compiled into:
The ()->Unit function has be wrapped by diff lambda, it's not same one. So, the android Handler can't removeCallback.
We have to replace with Runnable statement.
Could you please add some warning message just like SharedPreferences' commit() to removeCallback when using kotlin?