summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-26 20:41:16 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-26 20:41:16 +0200
commit257095760732597983bdd026e791907b7980e295 (patch)
treee528c6e4a6e96b3c4345c25789dc0b027edd6568
parent7df0f6313a46b80d760c9a80241922544333351c (diff)
patch 7.4.2262v7.4.2262
Problem: Fail to read register content from viminfo if it is 438 characters long. (John Chen) Solution: Adjust the check for line wrapping. (closes #1010)
-rw-r--r--src/ex_cmds.c2
-rw-r--r--src/testdir/test_viminfo.vim13
-rw-r--r--src/version.c2
3 files changed, 16 insertions, 1 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 72d480cc97..64d14aedd2 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2526,7 +2526,7 @@ barline_writestring(FILE *fd, char_u *s, int remaining_start)
else
++len;
}
- if (len > remaining)
+ if (len > remaining - 2)
{
fprintf(fd, ">%d\n|<", len);
remaining = LSIZE - 20;
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim
index 264baa1745..97fd7f7a60 100644
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -214,6 +214,19 @@ func Test_viminfo_registers()
call assert_equal(l, getreg('d', 1, 1))
call assert_equal("V", getregtype('d'))
+ " Length around 440 switches to line continuation.
+ let len = 434
+ while len < 445
+ let s = repeat('a', len)
+ call setreg('"', s)
+ wviminfo Xviminfo
+ call setreg('"', '')
+ rviminfo Xviminfo
+ call assert_equal(s, getreg('"'), 'wrong register at length: ' . len)
+
+ let len += 1
+ endwhile
+
call delete('Xviminfo')
endfunc
diff --git a/src/version.c b/src/version.c
index 9684a3ee1a..a46e74830d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2262,
+/**/
2261,
/**/
2260,