diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-07-03 09:45:09 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-07-03 09:47:16 +0300 |
commit | 26ac8db42bd29aa57b35e28437efa8dab10a4036 (patch) | |
tree | aad333e9c890585fce5519ea4056a7812e45b01c /acf | |
parent | 468c6fabd65f43966d56b59cf4d352d765d64616 (diff) | |
download | aconf-26ac8db42bd29aa57b35e28437efa8dab10a4036.tar.bz2 aconf-26ac8db42bd29aa57b35e28437efa8dab10a4036.tar.xz |
fix regression in transaction handling
Diffstat (limited to 'acf')
-rw-r--r-- | acf/transaction/init.lua | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/acf/transaction/init.lua b/acf/transaction/init.lua index 76a8d47..ca6ca6f 100644 --- a/acf/transaction/init.lua +++ b/acf/transaction/init.lua @@ -92,6 +92,7 @@ function Transaction:_set_multiple(mods) local name = pth.name(path) local old = self:get(path) + local is_table = type(value) == 'table' local delete = value == nil if delete then @@ -111,12 +112,13 @@ function Transaction:_set_multiple(mods) if type(old) == 'table' then if delete then for _, child in ipairs(old) do self:set(pth.join(path, child)) end - elseif type(value) == 'table' then return + elseif is_table then return elseif #old > 0 then error('Cannot assign a primitive value to non-leaf node '..path) end end + if is_table then value = {} end set(path, value, old == nil) local function set_parent() |