4040-- end
4141-- @class file
4242-- @name AceDB-3.0.lua
43- -- @release $Id: AceDB-3.0.lua 1353 2024-08-27 13:37:35Z nevcairiel $
44- local ACEDB_MAJOR , ACEDB_MINOR = " AceDB-3.0" , 30
43+ -- @release $Id: AceDB-3.0.lua 1364 2025-07-05 16:01:08Z nevcairiel $
44+ local ACEDB_MAJOR , ACEDB_MINOR = " AceDB-3.0" , 33
4545local AceDB = LibStub :NewLibrary (ACEDB_MAJOR , ACEDB_MINOR )
4646
4747if not AceDB then return end -- No upgrade needed
@@ -360,7 +360,7 @@ local function logoutHandler(frame, event)
360360
361361 -- cleanup sections that are empty without defaults
362362 local sv = rawget (db , " sv" )
363- for section in pairs (db . keys ) do
363+ for section in pairs (rawget ( db , " keys" ) ) do
364364 if rawget (sv , section ) then
365365 -- global is special, all other sections have sub-entrys
366366 -- also don't delete empty profiles on main dbs, only on namespaces
@@ -377,6 +377,26 @@ local function logoutHandler(frame, event)
377377 end
378378 end
379379 end
380+
381+ -- second pass after everything else is cleaned up to remove empty namespaces
382+ -- can't be run in-loop above since there is no guaranteed order
383+ for db in pairs (AceDB .db_registry ) do
384+ local sv = rawget (db , " sv" )
385+ local namespaces = rawget (sv , " namespaces" )
386+ if namespaces then
387+ for name in pairs (namespaces ) do
388+ -- cleanout empty profiles table, if still present
389+ if namespaces [name ].profiles and not next (namespaces [name ].profiles ) then
390+ namespaces [name ].profiles = nil
391+ end
392+
393+ -- remove entire namespace, if needed
394+ if not next (namespaces [name ]) then
395+ namespaces [name ] = nil
396+ end
397+ end
398+ end
399+ end
380400 end
381401end
382402
0 commit comments