From 2afb506b566ae6c3429b7d5cb518bc69d8b2ff04 Mon Sep 17 00:00:00 2001 From: cracyc Date: Sun, 11 Jun 2017 17:20:55 -0500 Subject: plugins/cheatfind: be more careful with unpack (nw) --- plugins/cheatfind/init.lua | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/plugins/cheatfind/init.lua b/plugins/cheatfind/init.lua index 5b52062a80b..c8202eb62ed 100644 --- a/plugins/cheatfind/init.lua +++ b/plugins/cheatfind/init.lua @@ -149,22 +149,24 @@ function cheatfind.startplugin() end for i = 1, olddata.size do - local old = string.unpack(format, olddata.block, i) - local new = string.unpack(format, newdata.block, i) - local oldc, newc = old, new - local comp = false - local addr = olddata.start + i - 1 - if not bcd or (check_bcd(old) and check_bcd(new)) then - if bcd then - oldc = frombcd(old) - newc = frombcd(new) - end - if cfoper[oper](newc, oldc, val, addr) then - ret[#ret + 1] = { addr = addr, - oldval = old, - newval = new, - bitmask = bitmask } - ref[ret[#ret].addr] = #ret + local oldstat, old = pcall(string.unpack, format, olddata.block, i) + local newstat, new = pcall(string.unpack, format, newdata.block, i) + if oldstat and newstat then + local oldc, newc = old, new + local comp = false + local addr = olddata.start + i - 1 + if not bcd or (check_bcd(old) and check_bcd(new)) then + if bcd then + oldc = frombcd(old) + newc = frombcd(new) + end + if cfoper[oper](newc, oldc, val, addr) then + ret[#ret + 1] = { addr = addr, + oldval = old, + newval = new, + bitmask = bitmask } + ref[ret[#ret].addr] = #ret + end end end end -- cgit v1.2.3