# HG changeset patch # User Christian Brabandt # Date 1472237108 -7200 # Node ID baad324e9fbcedee64bdeff2b99e5dc0324a3855 # Parent 5b1f5a97901af2642f735efe38540cd4156927ea commit https://github.com/vim/vim/commit/257095760732597983bdd026e791907b7980e295 Author: Bram Moolenaar Date: Fri Aug 26 20:41:16 2016 +0200 patch 7.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 https://github.com/vim/vim/issues/1010) diff --git a/src/ex_cmds.c b/src/ex_cmds.c --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -2526,7 +2526,7 @@ barline_writestring(FILE *fd, char_u *s, 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 --- 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 --- 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,