mirror of
https://github.com/revanced/smali.git
synced 2025-06-13 04:27:38 +02:00
- Fixed an issue with debug info decoding, when it encountered an "end local" instruction for a register/local that hadn't been declared previously by a .local directive. This assumably happens when "ending" a parameter, in order to reuse that register for something else
git-svn-id: https://smali.googlecode.com/svn/trunk@176 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
@ -79,13 +79,21 @@ public class DebugInfoDecoder {
|
|||||||
case 0x05:
|
case 0x05:
|
||||||
{
|
{
|
||||||
EndLocal inst = (EndLocal)debugInst;
|
EndLocal inst = (EndLocal)debugInst;
|
||||||
delegate.endLocal(address, locals[inst.getRegisterNumber()]);
|
Local local = locals[inst.getRegisterNumber()];
|
||||||
|
if (local == null) {
|
||||||
|
local = new Local(inst.getRegisterNumber(), null, null, null);
|
||||||
|
}
|
||||||
|
delegate.endLocal(address, local);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x06:
|
case 0x06:
|
||||||
{
|
{
|
||||||
RestartLocal inst = (RestartLocal)debugInst;
|
RestartLocal inst = (RestartLocal)debugInst;
|
||||||
delegate.restartLocal(address, locals[inst.getRegisterNumber()]);
|
Local local = locals[inst.getRegisterNumber()];
|
||||||
|
if (local == null) {
|
||||||
|
local = new Local(inst.getRegisterNumber(), null, null, null);
|
||||||
|
}
|
||||||
|
delegate.restartLocal(address, local);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x07:
|
case 0x07:
|
||||||
|
Reference in New Issue
Block a user