diff options
author | luukvbaal <31730729+luukvbaal@users.noreply.github.com> | 2023-01-17 02:51:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-17 09:51:01 +0800 |
commit | f6929ea51d21034c6ed00d68a727c2c7cd7ec6ac (patch) | |
tree | ed170792a83bb0f4a83e218597944d6cc7cacee4 | |
parent | 6c2f02cbd02e8fd90e8ffae271dad3df48a54c4a (diff) | |
download | rneovim-f6929ea51d21034c6ed00d68a727c2c7cd7ec6ac.tar.gz rneovim-f6929ea51d21034c6ed00d68a727c2c7cd7ec6ac.tar.bz2 rneovim-f6929ea51d21034c6ed00d68a727c2c7cd7ec6ac.zip |
fix(tabline): avoid memory leak in tabline click definitions (#21847)
Problem: Memory is leaked in tabline click definitions since
https://github.com/neovim/neovim/pull/21008.
Solution: Add back a call to `stl_clear_click_defs()` that was lost in
the refactor PR.
-rw-r--r-- | src/nvim/statusline.c | 4 | ||||
-rw-r--r-- | test/functional/ui/tabline_spec.lua | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/statusline.c b/src/nvim/statusline.c index 3171ee1605..e0c531859c 100644 --- a/src/nvim/statusline.c +++ b/src/nvim/statusline.c @@ -733,6 +733,10 @@ void draw_tabline(void) return; } + // Clear tab_page_click_defs: Clicking outside of tabs has no effect. + assert(tab_page_click_defs_size >= (size_t)Columns); + stl_clear_click_defs(tab_page_click_defs, tab_page_click_defs_size); + // Use the 'tabline' option if it's set. if (*p_tal != NUL) { win_redr_custom(NULL, false, false); diff --git a/test/functional/ui/tabline_spec.lua b/test/functional/ui/tabline_spec.lua index 0e35a03557..2cdec62d01 100644 --- a/test/functional/ui/tabline_spec.lua +++ b/test/functional/ui/tabline_spec.lua @@ -119,4 +119,10 @@ describe("tabline", function() [2] = {bold = true, foreground = Screen.colors.Blue}; }} end) + + it('click definitions do not leak memory #21765', function() + command('set tabline=%@MyClickFunc@MyClickText%T') + command('set showtabline=2') + command('redrawtabline') + end) end) |