diff --git a/src/term.c b/src/term.c index 51698fb993..226bdee512 100644 --- a/src/term.c +++ b/src/term.c @@ -5231,6 +5231,13 @@ check_termcode(max_offset, buf, bufsize, buflen) else key_name[1] = get_pseudo_mouse_code(current_button, is_click, is_drag); + + /* Make sure the mouse position is valid. Some terminals may + * return weird values. */ + if (mouse_col >= Columns) + mouse_col = Columns - 1; + if (mouse_row >= Rows) + mouse_row = Rows - 1; } #endif /* FEAT_MOUSE */ diff --git a/src/testdir/test_utf8.in b/src/testdir/test_utf8.in index a1bc0e37f4..1d6a7a44eb 100644 --- a/src/testdir/test_utf8.in +++ b/src/testdir/test_utf8.in @@ -9,7 +9,7 @@ STARTTEST :call setline(1, ["aaa", "あああ", "bbb"]) :exe ":norm! gg0l\jjIx\" :let r = getline(1, '$') -: +:" :bwipeout! :$put=r :" @@ -25,20 +25,20 @@ STARTTEST : return ['あ', 'い'] :endfunction :command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo -:call feedkeys(":Test1 \'\$put='\", 't') -: +:call feedkeys(":Test1 \'\$put='\", 'it') +:" :function! CustomComplete2(lead, line, pos) : return ['あたし', 'あたま', 'あたりめ'] :endfunction :command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo -:call feedkeys(":Test2 \'\$put='\", 't') -: +:call feedkeys(":Test2 \'\$put='\", 'it') +:" :function! CustomComplete3(lead, line, pos) : return ['Nこ', 'Nん', 'Nぶ'] :endfunction :command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo -:call feedkeys(":Test3 \'\$put='\", 't') -: +:call feedkeys(":Test3 \'\$put='\", 'it') +:" :call garbagecollect(1) :/^start:/,$wq! test.out ENDTEST diff --git a/src/version.c b/src/version.c index 01c1f8a9c3..75cd33cdfa 100644 --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,10 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 936, +/**/ + 935, /**/ 934, /**/ diff --git a/src/window.c b/src/window.c index fd49ea49d9..9bf7a12e14 100644 --- a/src/window.c +++ b/src/window.c @@ -5790,6 +5790,8 @@ win_drag_vsep_line(dragwin, offset) offset = room; /* Move as far as we can */ if (offset <= 0) /* No room at all, quit. */ return; + if (fr == NULL) + return; /* Safety check, should not happen. */ /* grow frame fr by offset lines */ frame_new_width(fr, fr->fr_width + offset, left, FALSE);