fix(tui): do not invoke loop recursively for pad()

fixes #21610
This commit is contained in:
bfredl 2023-01-06 10:40:56 +01:00
parent 08ebf8d3a8
commit b303ab9a7d
2 changed files with 28 additions and 1 deletions

View File

@ -1626,7 +1626,7 @@ static void pad(void *ctx, size_t delay, int scale FUNC_ATTR_UNUSED, int force)
}
flush_buf(tui);
loop_uv_run(tui->loop, (int64_t)(delay / 10), false);
uv_sleep((unsigned int)(delay/10));
}
static void unibi_set_if_empty(unibi_term *ut, enum unibi_string str, const char *val)

View File

@ -1469,6 +1469,33 @@ describe('TUI', function()
|
{3:-- TERMINAL --} |]]))
end)
it('visual bell (padding) does not crash #21610', function()
feed_data ':set visualbell\n'
screen:expect{grid=[[
{1: } |
{4:~ }|
{4:~ }|
{4:~ }|
{5:[No Name] }|
:set visualbell |
{3:-- TERMINAL --} |
]]}
-- move left is enough to invoke the bell
feed_data 'h'
-- visual change to show we process events after this
feed_data 'i'
screen:expect{grid=[[
{1: } |
{4:~ }|
{4:~ }|
{4:~ }|
{5:[No Name] }|
{3:-- INSERT --} |
{3:-- TERMINAL --} |
]]}
end)
end)
describe('TUI', function()