diff src/undo.c @ 6616:290631797b76 v7.4.634

updated for version 7.4.634 Problem: Marks are not restored after redo + undo. Solution: Fix the way marks are restored. (Olaf Dabrunz)
author Bram Moolenaar <bram@vim.org>
date Tue, 17 Feb 2015 13:43:40 +0100
parents f1ba154c3a12
children 63b2bc619d5a
line wrap: on
line diff
--- a/src/undo.c
+++ b/src/undo.c
@@ -2847,11 +2847,14 @@ u_undoredo(undo)
      * restore marks from before undo/redo
      */
     for (i = 0; i < NMARKS; ++i)
+    {
 	if (curhead->uh_namedm[i].lnum != 0)
-	{
 	    curbuf->b_namedm[i] = curhead->uh_namedm[i];
+	if (namedm[i].lnum != 0)
 	    curhead->uh_namedm[i] = namedm[i];
-	}
+	else
+	    curhead->uh_namedm[i].lnum = 0;
+    }
     if (curhead->uh_visual.vi_start.lnum != 0)
     {
 	curbuf->b_visual = curhead->uh_visual;