mirror of
https://github.com/neovim/neovim.git
synced 2026-07-13 04:40:42 +00:00
vim-patch:9.0.0750: crash when popup closed in callback (#20660)
vim-patch:9.0.0750: crash when popup closed in callback Problem: Crash when popup closed in callback. (Maxim Kim) Solution: In syntax_end_parsing() check that syn_block is valid.0abd6cf62d(cherry picked from commit2a2ae32ceb)
This commit is contained in:
committed by
GitHub
parent
5b1bda14ae
commit
7a011cb58d
@@ -1828,7 +1828,7 @@ win_update_start:
|
||||
// Let the syntax stuff know we skipped a few lines.
|
||||
if (syntax_last_parsed != 0 && syntax_last_parsed + 1 < lnum
|
||||
&& syntax_present(wp)) {
|
||||
syntax_end_parsing(syntax_last_parsed + 1);
|
||||
syntax_end_parsing(wp, syntax_last_parsed + 1);
|
||||
}
|
||||
|
||||
// Display one line
|
||||
@@ -1902,7 +1902,7 @@ win_update_start:
|
||||
|
||||
// Let the syntax stuff know we stop parsing here.
|
||||
if (syntax_last_parsed != 0 && syntax_present(wp)) {
|
||||
syntax_end_parsing(syntax_last_parsed + 1);
|
||||
syntax_end_parsing(wp, syntax_last_parsed + 1);
|
||||
}
|
||||
|
||||
// If we didn't hit the end of the file, and we didn't finish the last
|
||||
|
||||
@@ -1327,10 +1327,13 @@ static bool syn_stack_equal(synstate_T *sp)
|
||||
// displayed line
|
||||
// displayed line
|
||||
// lnum -> line below window
|
||||
void syntax_end_parsing(linenr_T lnum)
|
||||
void syntax_end_parsing(win_T *wp, linenr_T lnum)
|
||||
{
|
||||
synstate_T *sp;
|
||||
|
||||
if (syn_block != wp->w_s) {
|
||||
return; // not the right window
|
||||
}
|
||||
sp = syn_stack_find_entry(lnum);
|
||||
if (sp != NULL && sp->sst_lnum < lnum) {
|
||||
sp = sp->sst_next;
|
||||
|
||||
Reference in New Issue
Block a user