diff options
author | oni-link <knil.ino@gmail.com> | 2017-03-04 20:12:57 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-03-04 20:12:57 +0100 |
commit | 3030ef825d9fbf6a64f209d85409f90d06f5f1cd (patch) | |
tree | eb311f7a30ceca981201b3eb2bf0a6c3dfdb16cb /src | |
parent | af63f321295a37e411aac82b56a5548bdbe82877 (diff) | |
download | rneovim-3030ef825d9fbf6a64f209d85409f90d06f5f1cd.tar.gz rneovim-3030ef825d9fbf6a64f209d85409f90d06f5f1cd.tar.bz2 rneovim-3030ef825d9fbf6a64f209d85409f90d06f5f1cd.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/terminal.c | 2 |
1 files changed, 2 insertions, 0 deletions
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); |