diff options
| author | Ajax <commial@gmail.com> | 2016-01-08 16:43:25 +0100 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2016-01-08 16:43:25 +0100 |
| commit | 870b4c899e32455c34186cf521d12a18b8070db1 (patch) | |
| tree | 2a911e0415add4899bff13df118f600479ab9b07 /miasm2/core/cpu.py | |
| parent | 44cc82252eb55ab7e1c915780ca8a86e3155f075 (diff) | |
| download | miasm-870b4c899e32455c34186cf521d12a18b8070db1.tar.gz miasm-870b4c899e32455c34186cf521d12a18b8070db1.zip | |
Cpu: leave atomic mode on disasm Exception
Diffstat (limited to 'miasm2/core/cpu.py')
| -rw-r--r-- | miasm2/core/cpu.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/miasm2/core/cpu.py b/miasm2/core/cpu.py index f2c4c3b4..48f7e26e 100644 --- a/miasm2/core/cpu.py +++ b/miasm2/core/cpu.py @@ -1020,11 +1020,7 @@ class cls_mn(object): else: todo.append((dict(fname_values), (nb, v), offset_b)) - candidates = [c for c in candidates] - - if not candidates: - raise Disasm_Exception('cannot disasm (guess) at %X' % offset) - return candidates + return [c for c in candidates] def reset_class(self): for f in self.fields_order: @@ -1099,6 +1095,10 @@ class cls_mn(object): pre_dis_info, bs, mode, offset, prefix_len = cls.pre_dis( bs_o, mode_o, offset) candidates = cls.guess_mnemo(bs, mode, pre_dis_info, offset) + if not candidates: + bs_o.leave_atomic_mode() + raise Disasm_Exception('cannot disasm (guess) at %X' % offset) + out = [] out_c = [] if hasattr(bs, 'getlen'): |