summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mark.c3
-rw-r--r--src/testdir/test_viminfo.vim26
-rw-r--r--src/version.c2
3 files changed, 27 insertions, 4 deletions
diff --git a/src/mark.c b/src/mark.c
index 0627a7cea..9c84bc40d 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -1597,7 +1597,8 @@ handle_viminfo_mark(garray_T *values, int force)
if (fm != NULL)
{
- if (vi_namedfm != NULL || fm->time_set < timestamp || force)
+ if (vi_namedfm != NULL || fm->fmark.mark.lnum == 0
+ || fm->time_set < timestamp || force)
{
fm->fmark.mark.lnum = lnum;
fm->fmark.mark.col = col;
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim
index 97fd7f7a6..7d0f1570b 100644
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -1,6 +1,6 @@
" Test for reading and writing .viminfo
-function Test_read_and_write()
+function Test_viminfo_read_and_write()
call histdel(':')
let lines = [
\ '# comment line',
@@ -17,7 +17,7 @@ function Test_read_and_write()
let lines = readfile('Xviminfo')
let done = 0
for line in lines
- if line[0] == '|' && line !~ '^|[234],'
+ if line[0] == '|' && line !~ '^|[234],' && line !~ '^|<'
if done == 0
call assert_equal('|1,4', line)
elseif done == 1
@@ -469,7 +469,27 @@ func Test_viminfo_file_mark_tabclose()
silent! bwipe Xtestfileintab
endfunc
-func Test_oldfiles()
+func Test_viminfo_file_mark_zero_time()
+ let lines = [
+ \ '# Viminfo version',
+ \ '|1,4',
+ \ '',
+ \ '*encoding=utf-8',
+ \ '',
+ \ '# File marks:',
+ \ "'B 1 0 /tmp/nothing",
+ \ '|4,66,1,0,0,"/tmp/nothing"',
+ \ "",
+ \ ]
+ call writefile(lines, 'Xviminfo')
+ delmark B
+ rviminfo Xviminfo
+ call delete('Xviminfo')
+ call assert_equal(1, line("'B"))
+ delmark B
+endfunc
+
+func Test_viminfo_oldfiles()
let v:oldfiles = []
let lines = [
\ '# comment line',
diff --git a/src/version.c b/src/version.c
index 939a3e138..2bfd48507 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 */
/**/
+ 39,
+/**/
38,
/**/
37,