changeset 1056:e6d25347de2c v7.0.182

updated for version 7.0-182
author vimboss
date Tue, 09 Jan 2007 19:23:12 +0000
parents ef6b11bee7d0
children 4a4b16c67c62
files src/undo.c src/version.c
diffstat 2 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/undo.c
+++ b/src/undo.c
@@ -341,11 +341,15 @@ u_savecommon(top, bot, newbot)
 	uhp->uh_alt_next = old_curhead;
 	if (old_curhead != NULL)
 	{
+	    uhp->uh_alt_prev = old_curhead->uh_alt_prev;
+	    if (uhp->uh_alt_prev != NULL)
+		uhp->uh_alt_prev->uh_alt_next = uhp;
 	    old_curhead->uh_alt_prev = uhp;
 	    if (curbuf->b_u_oldhead == old_curhead)
 		curbuf->b_u_oldhead = uhp;
 	}
-	uhp->uh_alt_prev = NULL;
+	else
+	    uhp->uh_alt_prev = NULL;
 	if (curbuf->b_u_newhead != NULL)
 	    curbuf->b_u_newhead->uh_prev = uhp;
 
@@ -856,6 +860,11 @@ undo_time(step, sec, absolute)
 	uhp = curbuf->b_u_curhead;
 	while (uhp != NULL)
 	{
+	    /* Go back to the first branch with a mark. */
+	    while (uhp->uh_alt_prev != NULL
+					&& uhp->uh_alt_prev->uh_walk == mark)
+		uhp = uhp->uh_alt_prev;
+
 	    /* Find the last branch with a mark, that's the one. */
 	    last = uhp;
 	    while (last->uh_alt_next != NULL
@@ -865,6 +874,8 @@ undo_time(step, sec, absolute)
 	    {
 		/* Make the used branch the first entry in the list of
 		 * alternatives to make "u" and CTRL-R take this branch. */
+		while (uhp->uh_alt_prev != NULL)
+		    uhp = uhp->uh_alt_prev;
 		if (last->uh_alt_next != NULL)
 		    last->uh_alt_next->uh_alt_prev = last->uh_alt_prev;
 		last->uh_alt_prev->uh_alt_next = last->uh_alt_next;
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    182,
+/**/
     181,
 /**/
     180,