summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2013-11-05 16:17:45 +0100
committerPhilipp Gesang <phg42.2a@gmail.com>2013-11-05 16:17:45 +0100
commit8fbfd38b52e4e4c6381d10610211a5e66140c0c1 (patch)
treed0476ad96deb000ca7551ce2ef56dc4c85ead33d
parent0228ec5a8a6d969c94cc2f5b7befd0cdb17a3c63 (diff)
downloadluaotfload-8fbfd38b52e4e4c6381d10610211a5e66140c0c1.tar.gz
[tool] protect --list and --field against invalid queries
-rwxr-xr-xluaotfload-tool.lua17
1 files changed, 14 insertions, 3 deletions
diff --git a/luaotfload-tool.lua b/luaotfload-tool.lua
index 17d9399..3bae175 100755
--- a/luaotfload-tool.lua
+++ b/luaotfload-tool.lua
@@ -892,9 +892,17 @@ local get_fields get_fields = function (entry, fields, acc, n)
local tmp = entry
for i = 1, #chain - 1 do
tmp = tmp [chain [i]]
+ if not tmp then
+ --- invalid field
+ break
+ end
+ end
+ if tmp then
+ local value = tmp [chain [#chain]]
+ acc[#acc+1] = value or false
+ else
+ acc[#acc+1] = false
end
- local value = tmp [chain [#chain]]
- acc[#acc+1] = value or false
return get_fields (entry, fields, acc, n+1)
end
return acc
@@ -997,8 +1005,11 @@ actions.list = function (job)
local chain = stringsplit (criterion, "->")
for i = 1, #chain - 1 do
tmp = tmp [chain [i]]
+ if not tmp then
+ break
+ end
end
- local value = tmp [chain [#chain]]
+ local value = tmp and tmp [chain [#chain]] or "<none>"
if value then
--value = tostring(value)
local entries = by_category[value]