summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-02-18 23:12:01 +0100
committerBram Moolenaar <Bram@vim.org>2017-02-18 23:12:01 +0100
commit46522af72424c7fadfa7a4cbba3dd21b82d19131 (patch)
tree3fa8c013e9bf1ad3112367c3870ae3a76d745321
parent803452046ba6cda7a2896626572eb78b2358c965 (diff)
downloadvim-git-46522af72424c7fadfa7a4cbba3dd21b82d19131.tar.gz
patch 8.0.0339: illegal memory access with vi'v8.0.0339
Problem: Illegal memory access with vi' Solution: For quoted text objects bail out if the Visual area spans more than one line.
-rw-r--r--src/search.c4
-rw-r--r--src/testdir/test_visual.vim7
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 0 deletions
diff --git a/src/search.c b/src/search.c
index 6e62184d4..83c584272 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4357,6 +4357,10 @@ current_quote(
/* Correct cursor when 'selection' is exclusive */
if (VIsual_active)
{
+ /* this only works within one line */
+ if (VIsual.lnum != curwin->w_cursor.lnum)
+ return FALSE;
+
vis_bef_curs = lt(VIsual, curwin->w_cursor);
if (*p_sel == 'e' && vis_bef_curs)
dec_cursor();
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index 9d093d34e..227da87f8 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -43,3 +43,10 @@ func Test_Visual_vapo()
normal vapo
bwipe!
endfunc
+
+func Test_Visual_inner_quote()
+ new
+ normal oxX
+ normal vki'
+ bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index aac6dae67..41a0321ed 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 339,
+/**/
338,
/**/
337,