diff options
| author | Bram Moolenaar <Bram@vim.org> | 2017-01-24 19:55:43 +0100 |
|---|---|---|
| committer | Bram Moolenaar <Bram@vim.org> | 2017-01-24 19:55:43 +0100 |
| commit | 941c12da3c087fd04aa6c120a76bf28f19349d96 (patch) | |
| tree | 296b78adbc71b98ce21b88a6db0bbaef2e1c9c67 /src/ops.c | |
| parent | bff6ad133195145f810645c0bde7a2a1fdfc37b8 (diff) | |
| download | vim-git-8.0.0234.tar.gz | |
patch 8.0.0234: crash when using put in Visual modev8.0.0234
Problem: When several lines are visually selected and one of them is short,
using put may cause a crash. (Axel Bender)
Solution: Check for a short line. (Christian Brabandt)
Diffstat (limited to 'src/ops.c')
| -rw-r--r-- | src/ops.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -3774,16 +3774,25 @@ do_put( */ if (y_type == MCHAR && y_size == 1) { - linenr_T end = curbuf->b_visual.vi_end.lnum; + linenr_T end; - if (curbuf->b_visual.vi_end.lnum < curbuf->b_visual.vi_start.lnum) - end = curbuf->b_visual.vi_start.lnum; + if (VIsual_active) + { + end = curbuf->b_visual.vi_end.lnum; + if (end < curbuf->b_visual.vi_start.lnum) + end = curbuf->b_visual.vi_start.lnum; + } do { totlen = count * yanklen; if (totlen > 0) { oldp = ml_get(lnum); + if (VIsual_active && col > (int)STRLEN(oldp)) + { + lnum++; + continue; + } newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1)); if (newp == NULL) goto end; /* alloc() gave an error message */ |
