summaryrefslogtreecommitdiff
path: root/src/ex_getln.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-02-26 14:00:07 +0100
committerBram Moolenaar <Bram@vim.org>2017-02-26 14:00:07 +0100
commitba748c8a847561c043a63827bcb1d98bdebe16e6 (patch)
tree9c5660b52127b6e85fc48ea5187700f28ad31d4b /src/ex_getln.c
parent376407674ff10b60e7c6090906be50982763f0f3 (diff)
downloadvim-ba748c8a847561c043a63827bcb1d98bdebe16e6.zip
patch 8.0.0374: invalid memory access when using :sc in Ex mode
Problem: Invalid memory access when using :sc in Ex mode. (Dominique Pelle) Solution: Avoid the column being negative. Also fix a hang in Ex mode.
Diffstat (limited to 'src/ex_getln.c')
-rw-r--r--src/ex_getln.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 3c40ff79a..918031914 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2369,9 +2369,16 @@ getexmodeline(
if (ga_grow(&line_ga, 40) == FAIL)
break;
- /* Get one character at a time. */
+ /*
+ * Get one character at a time.
+ */
prev_char = c1;
- c1 = vgetc();
+
+ /* Check for a ":normal" command and no more characters left. */
+ if (ex_normal_busy > 0 && typebuf.tb_len == 0)
+ c1 = '\n';
+ else
+ c1 = vgetc();
/*
* Handle line editing.