mirror of
https://github.com/skylot/jadx.git
synced 2024-10-07 10:03:27 +00:00
fix: method info cache error (#868)
This commit is contained in:
parent
26bad4a1cd
commit
49a82c8388
@ -26,20 +26,22 @@ public class InfoStorage {
|
||||
}
|
||||
}
|
||||
|
||||
private int generateMethodLookupId(DexNode dex, int mthId) {
|
||||
private static int generateMethodLookupId(DexNode dex, int mthId) {
|
||||
return dex.getDexId() << 16 | mthId;
|
||||
}
|
||||
|
||||
public MethodInfo getMethod(DexNode dex, int mtdId) {
|
||||
return methods.get(generateMethodLookupId(dex, mtdId));
|
||||
synchronized (methods) {
|
||||
return methods.get(generateMethodLookupId(dex, mtdId));
|
||||
}
|
||||
}
|
||||
|
||||
public MethodInfo putMethod(DexNode dex, int mthId, MethodInfo methodInfo) {
|
||||
synchronized (methods) {
|
||||
MethodInfo uniqueMethodInfo = putMethod(methodInfo);
|
||||
MethodInfo prev = methods.put(generateMethodLookupId(dex, mthId), uniqueMethodInfo);
|
||||
if (prev != null) {
|
||||
throw new JadxRuntimeException("Method info already added: " + methodInfo);
|
||||
if (prev != null && prev != uniqueMethodInfo) {
|
||||
throw new JadxRuntimeException("Method lookup id collision: " + methodInfo + ", " + prev + ", " + uniqueMethodInfo);
|
||||
}
|
||||
return uniqueMethodInfo;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user