diff src/ex_getln.c @ 4327:0d3573091d42 v7.3.913

updated for version 7.3.913 Problem: Still a crash when writing viminfo. Solution: Add checks for NULL pointers. (Ron Aaron)
author Bram Moolenaar <bram@vim.org>
date Wed, 24 Apr 2013 15:39:11 +0200
parents 8e1d1da398b3
children 220bdea4f579
line wrap: on
line diff
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -6177,6 +6177,7 @@ finish_viminfo_history()
 	}
 	vim_free(viminfo_history[type]);
 	viminfo_history[type] = NULL;
+	viminfo_hisidx[type] = 0;
     }
 }
 
@@ -6230,6 +6231,7 @@ write_viminfo_history(fp)
 			&& !(round == 2 && i >= viminfo_hisidx[type]))
 		{
 		    p = round == 1 ? history[type][i].hisstr
+				   : viminfo_history[type] == NULL ? NULL
 						   : viminfo_history[type][i];
 		    if (p != NULL && (round == 2 || !history[type][i].viminfo))
 		    {
@@ -6261,7 +6263,8 @@ write_viminfo_history(fp)
 		}
 	}
 	for (i = 0; i < viminfo_hisidx[type]; ++i)
-	    vim_free(viminfo_history[type][i]);
+	    if (viminfo_history[type] != NULL)
+		vim_free(viminfo_history[type][i]);
 	vim_free(viminfo_history[type]);
 	viminfo_history[type] = NULL;
 	viminfo_hisidx[type] = 0;