diff options
author | cracyc <cracyc@users.noreply.github.com> | 2017-06-11 17:20:55 -0500 |
---|---|---|
committer | cracyc <cracyc@users.noreply.github.com> | 2017-06-11 17:20:55 -0500 |
commit | 2afb506b566ae6c3429b7d5cb518bc69d8b2ff04 (patch) | |
tree | fdf5d63212e5e05881663c57b448f116f61a5355 | |
parent | 0a7da0fb674cc0929e0a7e74ada2f064e61b431c (diff) |
plugins/cheatfind: be more careful with unpack (nw)
-rw-r--r-- | plugins/cheatfind/init.lua | 34 |
1 files 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 |