diff options
author | Kim Alvefur <zash@zash.se> | 2017-11-10 09:44:30 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-11-10 09:44:30 +0100 |
commit | 06addc9a735417f7194a0e579b05bc0c5d530a00 (patch) | |
tree | cb5e7b4e95c3558d3aee6be811f9a6494045326f /plugins/mod_storage_internal.lua | |
parent | cb209b0f1ecd728ae4b5a5ba48c0699fd6a02ffc (diff) | |
download | prosody-06addc9a735417f7194a0e579b05bc0c5d530a00.tar.gz prosody-06addc9a735417f7194a0e579b05bc0c5d530a00.zip |
mod_storage_internal: Optimize truncation
Diffstat (limited to 'plugins/mod_storage_internal.lua')
-rw-r--r-- | plugins/mod_storage_internal.lua | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/plugins/mod_storage_internal.lua b/plugins/mod_storage_internal.lua index 55a4bfeb..4395c3f0 100644 --- a/plugins/mod_storage_internal.lua +++ b/plugins/mod_storage_internal.lua @@ -195,14 +195,15 @@ function archive:delete(username, query) if query.reverse then -- Before: { 1, 2, 3, 4, 5, } -- After: { 1, 2, 3 } - while #items > query.truncate do - table.remove(items); + for i = #items, query.truncate + 1, -1 do + items[i] = nil; end else -- Before: { 1, 2, 3, 4, 5, } -- After: { 3, 4, 5 } - while #items > query.truncate do - table.remove(items, 1); + local offset = #items - query.truncate; + for i = 1, #items do + items[i] = items[i+offset]; end end end |