aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-04-17 09:44:47 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-04-17 10:12:50 +0800
commit2116ff47eadd54fefc1dd6f7f13431feda64acb5 (patch)
tree6b22520f0997ebadc218a49672984ec0126ece19 /src
parent813ecdac795405565aab5cb61cb83b9ca1581b60 (diff)
downloadrneovim-2116ff47eadd54fefc1dd6f7f13431feda64acb5.tar.gz
rneovim-2116ff47eadd54fefc1dd6f7f13431feda64acb5.tar.bz2
rneovim-2116ff47eadd54fefc1dd6f7f13431feda64acb5.zip
vim-patch:8.2.0791: a second popup window with terminal causes trouble
Problem: A second popup window with terminal causes trouble. Solution: Disallow opening a second terminal-popup window. (closes vim/vim#6101, closes vim/vim#6103) Avoid defaulting to an invalid line number. https://github.com/vim/vim/commit/b5383b174b2436b556f76f14badb1c1f55d6d8f6 This is the only applicable hunk.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_docmd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index cbfe6e3789..fc0bb48803 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -2373,8 +2373,13 @@ int parse_cmd_address(exarg_T *eap, char **errormsg, bool silent)
switch (eap->addr_type) {
case ADDR_LINES:
case ADDR_OTHER:
- // default is current line number
- eap->line2 = curwin->w_cursor.lnum;
+ // Default is the cursor line number. Avoid using an invalid
+ // line number though.
+ if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count) {
+ eap->line2 = curbuf->b_ml.ml_line_count;
+ } else {
+ eap->line2 = curwin->w_cursor.lnum;
+ }
break;
case ADDR_WINDOWS:
eap->line2 = CURRENT_WIN_NR;