summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit2afb506b566ae6c3429b7d5cb518bc69d8b2ff04 (patch)
treefdf5d63212e5e05881663c57b448f116f61a5355
parent0a7da0fb674cc0929e0a7e74ada2f064e61b431c (diff)
plugins/cheatfind: be more careful with unpack (nw)
-rw-r--r--plugins/cheatfind/init.lua34
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