changeset 17466:15de78cb9f39 v8.1.1731

patch 8.1.1731: command line history not read from viminfo on startup commit https://github.com/vim/vim/commit/26b654a5df9414e43734eb4c956b67c331d70a50 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jul 22 20:50:17 2019 +0200 patch 8.1.1731: command line history not read from viminfo on startup Problem: Command line history not read from viminfo on startup. Solution: Get history length after initializing it.
author Bram Moolenaar <Bram@vim.org>
date Mon, 22 Jul 2019 21:00:06 +0200
parents 2841dc265ad7
children ed03a1fb37ce
files src/testdir/test_viminfo.vim src/version.c src/viminfo.c
diffstat 3 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -1,6 +1,12 @@
 " Test for reading and writing .viminfo
 
 function Test_viminfo_read_and_write()
+  " First clear 'history', so that "hislen" is zero.  Then set it again,
+  " simulating Vim starting up.
+  set history=0
+  wviminfo Xviminfo
+  set history=1000
+
   call histdel(':')
   let lines = [
 	\ '# comment line',
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1731,
+/**/
     1730,
 /**/
     1729,
--- a/src/viminfo.c
+++ b/src/viminfo.c
@@ -212,9 +212,10 @@ prepare_viminfo_history(int asklen, int 
     int	    num;
     int	    type;
     int	    len;
-    int	    hislen = get_hislen();
+    int	    hislen;
 
     init_history();
+    hislen = get_hislen();
     viminfo_add_at_front = (asklen != 0 && !writing);
     if (asklen > hislen)
 	asklen = hislen;
@@ -460,7 +461,7 @@ merge_history(int type)
     // Make one long list with all entries.
     max_len = hislen + viminfo_hisidx[type];
     tot_hist = ALLOC_MULT(histentry_T *, max_len);
-    new_hist = ALLOC_MULT(histentry_T, hislen );
+    new_hist = ALLOC_MULT(histentry_T, hislen);
     if (tot_hist == NULL || new_hist == NULL)
     {
 	vim_free(tot_hist);