- 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:
JesusFreke@JesusFreke.com
2009-06-20 20:13:10 +00:00
parent 8bb1d77b66
commit 78314beef2

View File

@ -79,13 +79,21 @@ public class DebugInfoDecoder {
case 0x05:
{
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;
}
case 0x06:
{
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;
}
case 0x07: