mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
extmark: don't crash in RO buffer.
This commit is contained in:
parent
6222cca36a
commit
ebdf90e7d7
@ -243,7 +243,7 @@ int u_save(linenr_T top, linenr_T bot)
|
|||||||
*/
|
*/
|
||||||
int u_savesub(linenr_T lnum)
|
int u_savesub(linenr_T lnum)
|
||||||
{
|
{
|
||||||
return u_savecommon(lnum - 1, lnum + 1, lnum + 1, FALSE);
|
return u_savecommon(lnum - 1, lnum + 1, lnum + 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -254,7 +254,7 @@ int u_savesub(linenr_T lnum)
|
|||||||
*/
|
*/
|
||||||
int u_inssub(linenr_T lnum)
|
int u_inssub(linenr_T lnum)
|
||||||
{
|
{
|
||||||
return u_savecommon(lnum - 1, lnum, lnum + 1, FALSE);
|
return u_savecommon(lnum - 1, lnum, lnum + 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3043,8 +3043,14 @@ u_header_T *u_force_get_undo_header(buf_T *buf)
|
|||||||
}
|
}
|
||||||
// Create the first undo header for the buffer
|
// Create the first undo header for the buffer
|
||||||
if (!uhp) {
|
if (!uhp) {
|
||||||
// TODO(timeyyy): there would be a better way to do this!
|
// Undo is normally invoked in change code, which already has swapped
|
||||||
u_save_cursor();
|
// curbuf.
|
||||||
|
buf_T *save_curbuf = curbuf;
|
||||||
|
curbuf = buf;
|
||||||
|
// Args are tricky: this means replace empty range by empty range..
|
||||||
|
u_savecommon(0, 1, 1, true);
|
||||||
|
curbuf = save_curbuf;
|
||||||
|
|
||||||
uhp = buf->b_u_curhead;
|
uhp = buf->b_u_curhead;
|
||||||
if (!uhp) {
|
if (!uhp) {
|
||||||
uhp = buf->b_u_newhead;
|
uhp = buf->b_u_newhead;
|
||||||
|
@ -1262,6 +1262,12 @@ describe('Extmarks buffer api', function()
|
|||||||
check_undo_redo(ns, marks[1], 3, 4, 2, 6)
|
check_undo_redo(ns, marks[1], 3, 4, 2, 6)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('in read-only buffer', function()
|
||||||
|
command("view! runtime/doc/help.txt")
|
||||||
|
eq(true, curbufmeths.get_option('ro'))
|
||||||
|
local id = set_extmark(ns, 0, 0, 2)
|
||||||
|
eq({{id, 0, 2}}, get_extmarks(ns,0, -1))
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
describe('Extmarks buffer api with many marks', function()
|
describe('Extmarks buffer api with many marks', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user