fix(api): nvim_create_buf leaks memory if buffer is loaded early

Problem: memory leak in nvim_create_buf if buflist_new autocommands load the
new buffer early.

Solution: do not open a memfile in that case.
This commit is contained in:
Sean Dewar
2024-03-19 10:55:33 +00:00
parent aca2048bcd
commit d5c23d72a5
2 changed files with 18 additions and 7 deletions

View File

@@ -967,13 +967,15 @@ Buffer nvim_create_buf(Boolean listed, Boolean scratch, Error *err)
// Open the memline for the buffer. This will avoid spurious autocmds when
// a later nvim_buf_set_lines call would have needed to "open" the buffer.
try_start();
block_autocmds();
int status = ml_open(buf);
unblock_autocmds();
try_end(err);
if (status == FAIL) {
goto fail;
if (buf->b_ml.ml_mfp == NULL) {
try_start();
block_autocmds();
int status = ml_open(buf);
unblock_autocmds();
try_end(err);
if (status == FAIL) {
goto fail;
}
}
// Set last_changedtick to avoid triggering a TextChanged autocommand right