aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy/memory_usage_spec.lua
diff options
context:
space:
mode:
authorDaniel Steinberg <dstein64@users.noreply.github.com>2021-06-30 21:24:50 -0400
committerGitHub <noreply@github.com>2021-06-30 21:24:50 -0400
commit8bd699008445d690f8dca87e69a2e73f5f172784 (patch)
treee7331bae45b6434a9282b20c3f169d6bc323d045 /test/functional/legacy/memory_usage_spec.lua
parentd83bc835b6fad17c666807ecf63e68350416c269 (diff)
downloadrneovim-8bd699008445d690f8dca87e69a2e73f5f172784.tar.gz
rneovim-8bd699008445d690f8dca87e69a2e73f5f172784.tar.bz2
rneovim-8bd699008445d690f8dca87e69a2e73f5f172784.zip
vim-patch:8.2.1905: the wininfo list may contain stale entries (#14884)
Problem: The wininfo list may contain stale entries. Solution: When closing a window remove any other entry where the window pointer is NULL. https://github.com/vim/vim/commit/4882d983397057ea91c584c5a54aaccf15016d18
Diffstat (limited to 'test/functional/legacy/memory_usage_spec.lua')
-rw-r--r--test/functional/legacy/memory_usage_spec.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/functional/legacy/memory_usage_spec.lua b/test/functional/legacy/memory_usage_spec.lua
index 97ac96804e..0f2d77093a 100644
--- a/test/functional/legacy/memory_usage_spec.lua
+++ b/test/functional/legacy/memory_usage_spec.lua
@@ -166,4 +166,36 @@ describe('memory usage', function()
check_result({before=before, after=after, last=last},
pcall(ok, last.last < upper))
end)
+
+ it('releases memory when closing windows when folds exist', function()
+ local pid = eval('getpid()')
+ source([[
+ new
+ " Insert lines
+ call nvim_buf_set_lines(0, 0, 0, v:false, repeat([''], 999))
+ " Create folds
+ normal! gg
+ for _ in range(500)
+ normal! zfjj
+ endfor
+ ]])
+ poke_eventloop()
+ local before = monitor_memory_usage(pid)
+ source([[
+ " Split and close window multiple times
+ for _ in range(1000)
+ split
+ close
+ endfor
+ ]])
+ poke_eventloop()
+ local after = monitor_memory_usage(pid)
+ source('bwipe!')
+ poke_eventloop()
+ -- Allow for an increase of 5% in memory usage, which accommodates minor fluctuation,
+ -- but is small enough that if memory were not released (prior to PR #14884), the test
+ -- would fail.
+ local upper = before.last * 1.05
+ check_result({before=before, after=after}, pcall(ok, after.last <= upper))
+ end)
end)