]> granicus.if.org Git - vim/commitdiff
patch 8.2.0093: win_splitmove() can make Vim hang v8.2.0093
authorBram Moolenaar <Bram@vim.org>
Mon, 6 Jan 2020 20:03:24 +0000 (21:03 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 6 Jan 2020 20:03:24 +0000 (21:03 +0100)
Problem:    win_splitmove() can make Vim hang.
Solution:   Check windows exists in the current tab page. (closes #5444)

src/evalwindow.c
src/testdir/test_window_cmd.vim
src/version.c

index 34d202e0ad7712a53d4ef3566c8dc0d79cb910d1..672bfc13c959e35714ccf3c69ea811f0d2f5c6e0 100644 (file)
@@ -808,7 +808,8 @@ f_win_splitmove(typval_T *argvars, typval_T *rettv)
     wp = find_win_by_nr_or_id(&argvars[0]);
     targetwin = find_win_by_nr_or_id(&argvars[1]);
 
-    if (wp == NULL || targetwin == NULL || wp == targetwin)
+    if (wp == NULL || targetwin == NULL || wp == targetwin
+           || !win_valid(wp) || !win_valid(targetwin))
     {
         emsg(_(e_invalwindow));
        rettv->vval.v_number = -1;
index d543ef7e634ce15cca9d80842365c2b9addd987c..87c1f1f25a3fe728262fe313d64991f07d7dbc36 100644 (file)
@@ -927,6 +927,10 @@ func Test_win_splitmove()
   call assert_fails('call win_splitmove(winnr(), 123)', 'E957:')
   call assert_fails('call win_splitmove(123, winnr())', 'E957:')
   call assert_fails('call win_splitmove(winnr(), winnr())', 'E957:')
+
+  tabnew
+  call assert_fails('call win_splitmove(1, win_getid(1, 1))', 'E957:')
+  tabclose
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
index 28590ad44e9276ea936201d0bfe4e2481e82ea16..36dee83d27fd82b2e67b6379d86501177516685e 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    93,
 /**/
     92,
 /**/