From 3030ef825d9fbf6a64f209d85409f90d06f5f1cd Mon Sep 17 00:00:00 2001 From: oni-link Date: Sat, 4 Mar 2017 20:12:57 +0100 Subject: terminal.c: Reset cursor postion when using termopen() (#6212) After using 'termopen("echo") the current buffer content is changed, but the cursor position of the current window is not updated. Because of this, a call to 'mb_adjust_cursor()' can lead to a heap-buffer-overflow. Fix this by resetting the cursor for the current window. Fixes #3161 --- src/nvim/terminal.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index 8c08e98b5c..cec7fc84a5 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -240,6 +240,8 @@ Terminal *terminal_open(TerminalOptions opts) set_option_value((uint8_t *)"relativenumber", false, NULL, OPT_LOCAL); buf_set_term_title(curbuf, (char *)curbuf->b_ffname); RESET_BINDING(curwin); + // Reset cursor in current window. + curwin->w_cursor = (pos_T){ .lnum = 1, .col = 0, .coladd = 0 }; // Apply TermOpen autocmds _before_ configuring the scrollback buffer. apply_autocmds(EVENT_TERMOPEN, NULL, NULL, false, curbuf); -- cgit