updated for version 7.1-155
diff --git a/src/undo.c b/src/undo.c
index a11f360..626529a 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -1678,6 +1678,14 @@
 {
     u_header_T	    *tofree, *next;
 
+    /* If this is the top branch we may need to use u_freeheader() to update
+     * all the pointers. */
+    if (uhp == buf->b_u_oldhead)
+    {
+	u_freeheader(buf, uhp, uhpp);
+	return;
+    }
+
     if (uhp->uh_alt_prev != NULL)
 	uhp->uh_alt_prev->uh_alt_next = NULL;