diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-02-26 14:00:07 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-02-26 14:00:07 +0100 |
commit | ba748c8a847561c043a63827bcb1d98bdebe16e6 (patch) | |
tree | 9c5660b52127b6e85fc48ea5187700f28ad31d4b /src/ex_getln.c | |
parent | 376407674ff10b60e7c6090906be50982763f0f3 (diff) | |
download | vim-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.c | 11 |
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. |