fix(tui): don't crash when nvim__screenshot() is called with bad path (#34594)

Problem: Currently `vim.api.nvim__screenshot()` crashes when called with an
invalid path. This is because we don't check if `fopen()` returns a null
pointer.

Solution: Bail out if `fopen()` returns a null pointer.

Fixes: https://github.com/neovim/neovim/issues/34593
(cherry picked from commit 331de6afa6)
This commit is contained in:
Gabriel Ford
2025-06-28 19:12:42 -04:00
committed by github-actions[bot]
parent bfcf541a9e
commit 43804477ca

View File

@@ -1659,12 +1659,16 @@ void tui_set_icon(TUIData *tui, String icon)
void tui_screenshot(TUIData *tui, String path) void tui_screenshot(TUIData *tui, String path)
{ {
FILE *f = fopen(path.data, "w");
if (f == NULL) {
return;
}
UGrid *grid = &tui->grid; UGrid *grid = &tui->grid;
flush_buf(tui); flush_buf(tui);
grid->row = 0; grid->row = 0;
grid->col = 0; grid->col = 0;
FILE *f = fopen(path.data, "w");
tui->screenshot = f; tui->screenshot = f;
fprintf(f, "%d,%d\n", grid->height, grid->width); fprintf(f, "%d,%d\n", grid->height, grid->width);
unibi_out(tui, unibi_clear_screen); unibi_out(tui, unibi_clear_screen);