aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2018-08-13 19:15:09 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2018-12-06 15:56:50 +0200
commitf8874412c4315109202fbcf5632bec45525b2f4e (patch)
tree5739808ab3207e2170ae3c3da8ad9ac4ad445370
parentb36f5f5a9397c9f17b1ef2846a796c7de732cbfb (diff)
downloadawall-f8874412c4315109202fbcf5632bec45525b2f4e.tar.bz2
awall-f8874412c4315109202fbcf5632bec45525b2f4e.tar.xz
deterministic dependency resolver
-rw-r--r--awall/dependency.lua9
1 files changed, 5 insertions, 4 deletions
diff --git a/awall/dependency.lua b/awall/dependency.lua
index aead42e..13e54f7 100644
--- a/awall/dependency.lua
+++ b/awall/dependency.lua
@@ -1,11 +1,12 @@
--[[
Dependency order resolver for Alpine Wall
-Copyright (C) 2012-2014 Kaarle Ritvanen
+Copyright (C) 2012-2018 Kaarle Ritvanen
See LICENSE file for license details
]]--
local util = require('awall.util')
local contains = util.contains
+local sortedkeys = util.sortedkeys
return function(items)
local visited = {}
@@ -17,8 +18,8 @@ return function(items)
visited[key] = true
local after = util.list(items[key].after)
- for k, v in pairs(items) do
- if contains(v.before, key) then table.insert(after, k) end
+ for _, k in sortedkeys(items) do
+ if contains(items[k].before, key) then table.insert(after, k) end
end
for i, k in ipairs(after) do
if items[k] then
@@ -30,7 +31,7 @@ return function(items)
table.insert(res, key)
end
- for i, k in util.sortedkeys(items) do
+ for _, k in sortedkeys(items) do
local ek = visit(k)
if ek ~= nil then return ek end
end