aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-03-21 19:23:12 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-03-22 18:43:00 +0100
commitb82e3358e006264187f104bb0321104621bcc811 (patch)
tree5213b5b41398bc3e5547f2e76cb58d9e1db8ce80
parent9c8540edfd52c77678eac84e48beb56171487b3f (diff)
downloadrneovim-b82e3358e006264187f104bb0321104621bcc811.tar.gz
rneovim-b82e3358e006264187f104bb0321104621bcc811.tar.bz2
rneovim-b82e3358e006264187f104bb0321104621bcc811.zip
vim-patch:8.0.0083
Problem: Using freed memory with win_getid(). (Domenique Pelle) Solution: For the current tab use curwin. https://github.com/vim/vim/commit/8e639052638a9bb8c7dd6e3e10776b1218cec1a3
-rw-r--r--src/nvim/testdir/test_window_id.vim9
-rw-r--r--src/nvim/window.c6
2 files changed, 14 insertions, 1 deletions
diff --git a/src/nvim/testdir/test_window_id.vim b/src/nvim/testdir/test_window_id.vim
index 66656e1d0a..b3b506d04d 100644
--- a/src/nvim/testdir/test_window_id.vim
+++ b/src/nvim/testdir/test_window_id.vim
@@ -92,3 +92,12 @@ func Test_win_getid()
only!
endfunc
+
+func Test_win_getid_curtab()
+ tabedit X
+ tabfirst
+ copen
+ only
+ call assert_equal(win_getid(1), win_getid(1, 1))
+ tabclose!
+endfunc
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 15482d9061..ce322e1185 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -5821,7 +5821,11 @@ int win_getid(typval_T *argvars)
if (tp == NULL) {
return -1;
}
- wp = tp->tp_firstwin;
+ if (tp == curtab) {
+ wp = firstwin;
+ } else {
+ wp = tp->tp_firstwin;
+ }
}
for ( ; wp != NULL; wp = wp->w_next) {
if (--winnr == 0) {