summaryrefslogtreecommitdiffstats
path: root/acf2
diff options
context:
space:
mode:
Diffstat (limited to 'acf2')
-rw-r--r--acf2/transaction/init.lua16
1 files changed, 13 insertions, 3 deletions
diff --git a/acf2/transaction/init.lua b/acf2/transaction/init.lua
index 627703c..ec8da59 100644
--- a/acf2/transaction/init.lua
+++ b/acf2/transaction/init.lua
@@ -75,9 +75,19 @@ function Transaction:set_multiple(mods)
local addr, value = unpack(mod)
if value == nil then
for _, val in ipairs{self.validable, self.commit_val} do
- for path, a in pairs(val) do
- if a == addr then val[path] = nil end
- end
+ local done
+ repeat
+ done = true
+ for path, a in pairs(copy(val)) do
+ if a == addr then
+ for p, _ in pairs(copy(val)) do
+ if pth.is_subordinate(p, path) then val[p] = nil end
+ end
+ done = false
+ break
+ end
+ end
+ until done
end
end
end