diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-11-13 14:31:40 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-11-13 14:31:40 +0100 |
commit | 8e639052638a9bb8c7dd6e3e10776b1218cec1a3 (patch) | |
tree | a964794d08d3ebc1c2b029103ce3c3a2da803cde | |
parent | 3f7d0907269558cb3ea184a3083640f9e20bb21e (diff) |
patch 8.0.0083v8.0.0083
Problem: Using freed memory with win_getid(). (Domenique Pelle)
Solution: For the current tab use curwin.
-rw-r--r-- | src/testdir/test_window_id.vim | 9 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 5 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/testdir/test_window_id.vim b/src/testdir/test_window_id.vim index 66656e1d0a..b3b506d04d 100644 --- a/src/testdir/test_window_id.vim +++ b/src/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/version.c b/src/version.c index e85192247e..c7f00a8764 100644 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 83, +/**/ 82, /**/ 81, diff --git a/src/window.c b/src/window.c index 8e5336883f..ee5f7aa8aa 100644 --- a/src/window.c +++ b/src/window.c @@ -7133,7 +7133,10 @@ win_getid(typval_T *argvars) break; 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) |