updated for version 7.4.634
Problem:    Marks are not restored after redo + undo.
Solution:   Fix the way marks are restored. (Olaf Dabrunz)
diff --git a/src/undo.c b/src/undo.c
index 24dcf05..034d16c 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -2847,11 +2847,14 @@
      * 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;