aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_cmds.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-04-03 22:53:37 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-04-04 05:46:45 +0800
commit9955209afbedd00907a558a6d7d98a643c55455a (patch)
tree050f1f7552967e81a8a1e47a747e95197f26ab4e /src/nvim/ex_cmds.c
parentd73bf3138a802bb6c1c654cd913d4e91932287f8 (diff)
downloadrneovim-9955209afbedd00907a558a6d7d98a643c55455a.tar.gz
rneovim-9955209afbedd00907a558a6d7d98a643c55455a.tar.bz2
rneovim-9955209afbedd00907a558a6d7d98a643c55455a.zip
fix(substitute): properly check for empty command line
Diffstat (limited to 'src/nvim/ex_cmds.c')
-rw-r--r--src/nvim/ex_cmds.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index b493ad61ae..71b3517adc 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -3860,19 +3860,22 @@ static buf_T *do_sub(exarg_T *eap, proftime_T timeout, bool do_buf_event, handle
prompt = xmallocz(ec + 1);
memset(prompt, ' ', sc);
memset(prompt + sc, '^', ec - sc + 1);
- resp = (char_u *)getcmdline_prompt(NUL, prompt, 0, EXPAND_NOTHING,
+ resp = (char_u *)getcmdline_prompt(-1, prompt, 0, EXPAND_NOTHING,
NULL, CALLBACK_NONE);
msg_putchar('\n');
xfree(prompt);
if (resp != NULL) {
typed = *resp;
xfree(resp);
- // When ":normal" runs out of characters we get
- // an empty line. Use "q" to get out of the
- // loop.
- if (ex_normal_busy && typed == NUL) {
- typed = 'q';
- }
+ } else {
+ // getcmdline_prompt() returns NULL if there is no command line to return.
+ typed = NUL;
+ }
+ // When ":normal" runs out of characters we get
+ // an empty line. Use "q" to get out of the
+ // loop.
+ if (ex_normal_busy && typed == NUL) {
+ typed = 'q';
}
} else {
char_u *orig_line = NULL;